@mat3ra/made 2026.8.13-0 → 2026.8.26-0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +9 -5
- package/.babelrc +0 -10
- package/.eslintrc.json +0 -11
- package/.gitattributes +0 -1
- package/.husky/post-checkout +0 -3
- package/.husky/post-commit +0 -3
- package/.husky/post-merge +0 -3
- package/.husky/pre-commit +0 -6
- package/.husky/pre-push +0 -3
- package/.mocharc.json +0 -5
- package/.pre-commit-config.yaml +0 -26
- package/.prettierignore +0 -2
- package/.prettierrc +0 -6
- package/AGENTS.md +0 -133
- package/MANIFEST.in +0 -1
- package/data/constants.json +0 -13
- package/data/reciprocal_paths.json +0 -111
- package/images/made/tools/tools_diagram_general.png +0 -3
- package/images/made/tools/tools_diagram_interface.png +0 -3
- package/pyproject.toml +0 -123
- package/scripts/generate-mixins.ts +0 -28
- package/src/__init__.py +0 -0
- package/src/js/Material.ts +0 -618
- package/src/js/basis/basis.ts +0 -634
- package/src/js/basis/constrained_basis.ts +0 -115
- package/src/js/basis/coordinates.ts +0 -92
- package/src/js/basis/elements.ts +0 -24
- package/src/js/basis/helpers.ts +0 -20
- package/src/js/basis/labels.ts +0 -6
- package/src/js/cell/cell.ts +0 -149
- package/src/js/cell/conventional_cell.ts +0 -86
- package/src/js/cell/primitive_cell.ts +0 -166
- package/src/js/constants/molecule.ts +0 -18
- package/src/js/constants.ts +0 -4
- package/src/js/constraints/constraints.ts +0 -45
- package/src/js/generated/MaterialSchemaMixin.ts +0 -79
- package/src/js/lattice/lattice.ts +0 -308
- package/src/js/lattice/lattice_types.ts +0 -134
- package/src/js/lattice/reciprocal/lattice_reciprocal.ts +0 -206
- package/src/js/lattice/reciprocal/paths.ts +0 -39
- package/src/js/lattice/reciprocal/symmetry_points.ts +0 -886
- package/src/js/lattice/unit_cell.ts +0 -66
- package/src/js/made.ts +0 -62
- package/src/js/parsers/cif.ts +0 -25
- package/src/js/parsers/errors.ts +0 -6
- package/src/js/parsers/espresso.ts +0 -29
- package/src/js/parsers/native_format_parsers.ts +0 -52
- package/src/js/parsers/parsers.ts +0 -13
- package/src/js/parsers/poscar.ts +0 -218
- package/src/js/parsers/xyz.ts +0 -190
- package/src/js/parsers/xyz_combinatorial_basis.ts +0 -268
- package/src/js/tools/basis.ts +0 -131
- package/src/js/tools/cell.ts +0 -40
- package/src/js/tools/index.ts +0 -11
- package/src/js/tools/material.ts +0 -64
- package/src/js/tools/supercell.ts +0 -89
- package/src/js/tools/surface.ts +0 -213
- package/src/py/__init__.py +0 -0
- package/src/py/mat3ra/__init__.py +0 -1
- package/src/py/mat3ra/made/__init__.py +0 -7
- package/src/py/mat3ra/made/basis/__init__.py +0 -255
- package/src/py/mat3ra/made/basis/coordinates.py +0 -43
- package/src/py/mat3ra/made/cell/__init__.py +0 -55
- package/src/py/mat3ra/made/cell/primitive_cell.py +0 -156
- package/src/py/mat3ra/made/data_helper.py +0 -5
- package/src/py/mat3ra/made/lattice.py +0 -195
- package/src/py/mat3ra/made/material.py +0 -135
- package/src/py/mat3ra/made/metadata.py +0 -45
- package/src/py/mat3ra/made/reciprocal/__init__.py +0 -5
- package/src/py/mat3ra/made/reciprocal/lattice_reciprocal.py +0 -147
- package/src/py/mat3ra/made/reciprocal/paths.py +0 -30
- package/src/py/mat3ra/made/reciprocal/symmetry_points.py +0 -385
- package/src/py/mat3ra/made/tools/README.md +0 -173
- package/src/py/mat3ra/made/tools/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/analyze/__init__.py +0 -31
- package/src/py/mat3ra/made/tools/analyze/basis/__init__.py +0 -3
- package/src/py/mat3ra/made/tools/analyze/basis/analyzer.py +0 -50
- package/src/py/mat3ra/made/tools/analyze/build_metadata_analyzer.py +0 -32
- package/src/py/mat3ra/made/tools/analyze/build_metadata_analyzer_factory.py +0 -31
- package/src/py/mat3ra/made/tools/analyze/coordination.py +0 -56
- package/src/py/mat3ra/made/tools/analyze/crystal_site/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/analyze/crystal_site/adatom_crystal_site_material_analyzer.py +0 -35
- package/src/py/mat3ra/made/tools/analyze/crystal_site/adatom_material_analyzer.py +0 -49
- package/src/py/mat3ra/made/tools/analyze/crystal_site/crystal_site_analyzer.py +0 -65
- package/src/py/mat3ra/made/tools/analyze/crystal_site/voronoi_crystal_site_analyzer.py +0 -47
- package/src/py/mat3ra/made/tools/analyze/enums.py +0 -33
- package/src/py/mat3ra/made/tools/analyze/fingerprint/__init__.py +0 -4
- package/src/py/mat3ra/made/tools/analyze/fingerprint/layers/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/analyze/fingerprint/layers/layered_fingerprint_along_axis.py +0 -83
- package/src/py/mat3ra/made/tools/analyze/fingerprint/layers/unique_element_string_per_layer.py +0 -9
- package/src/py/mat3ra/made/tools/analyze/interface/__init__.py +0 -20
- package/src/py/mat3ra/made/tools/analyze/interface/commensurate.py +0 -156
- package/src/py/mat3ra/made/tools/analyze/interface/enums.py +0 -60
- package/src/py/mat3ra/made/tools/analyze/interface/grain_boundary.py +0 -80
- package/src/py/mat3ra/made/tools/analyze/interface/simple.py +0 -251
- package/src/py/mat3ra/made/tools/analyze/interface/twisted_nanoribbons.py +0 -91
- package/src/py/mat3ra/made/tools/analyze/interface/utils/__init__.py +0 -77
- package/src/py/mat3ra/made/tools/analyze/interface/utils/holders.py +0 -14
- package/src/py/mat3ra/made/tools/analyze/interface/utils/vector.py +0 -56
- package/src/py/mat3ra/made/tools/analyze/interface/zsl.py +0 -259
- package/src/py/mat3ra/made/tools/analyze/interface_material.py +0 -45
- package/src/py/mat3ra/made/tools/analyze/lattice/__init__.py +0 -2
- package/src/py/mat3ra/made/tools/analyze/lattice/analyzer.py +0 -126
- package/src/py/mat3ra/made/tools/analyze/lattice/helpers.py +0 -31
- package/src/py/mat3ra/made/tools/analyze/lattice_lines.py +0 -30
- package/src/py/mat3ra/made/tools/analyze/lattice_planes.py +0 -192
- package/src/py/mat3ra/made/tools/analyze/lattice_swap_analyzer.py +0 -105
- package/src/py/mat3ra/made/tools/analyze/material.py +0 -276
- package/src/py/mat3ra/made/tools/analyze/other.py +0 -434
- package/src/py/mat3ra/made/tools/analyze/rdf.py +0 -74
- package/src/py/mat3ra/made/tools/analyze/slab.py +0 -76
- package/src/py/mat3ra/made/tools/analyze/solid_solution_analyzer.py +0 -171
- package/src/py/mat3ra/made/tools/analyze/terrace.py +0 -105
- package/src/py/mat3ra/made/tools/analyze/utils.py +0 -162
- package/src/py/mat3ra/made/tools/bond_directions/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/bond_directions/bond_directions.py +0 -150
- package/src/py/mat3ra/made/tools/bond_directions/bond_directions_for_element_list.py +0 -7
- package/src/py/mat3ra/made/tools/bond_directions/bond_directions_templates_enum.py +0 -8
- package/src/py/mat3ra/made/tools/bond_directions/bond_directions_templates_for_element.py +0 -16
- package/src/py/mat3ra/made/tools/build/__init__.py +0 -25
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/heterostructure/__init__.py +0 -7
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/heterostructure/helpers.py +0 -59
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/heterostructure/types.py +0 -26
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/heterostructure/utils.py +0 -139
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/__init__.py +0 -47
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/base/__init__.py +0 -11
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/base/build_parameters.py +0 -5
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/base/builder.py +0 -164
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/base/configuration.py +0 -48
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/base/helpers.py +0 -134
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/commensurate/__init__.py +0 -6
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/commensurate/helpers.py +0 -157
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/enums.py +0 -7
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/twisted/__init__.py +0 -7
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/twisted/configuration.py +0 -13
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/twisted/helpers.py +0 -70
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/utils.py +0 -87
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/zsl/__init__.py +0 -6
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/zsl/helpers.py +0 -129
- package/src/py/mat3ra/made/tools/build/defective_structures/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/defective_structures/one_dimensional/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/defective_structures/one_dimensional/grain_boundary_linear/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/defective_structures/one_dimensional/grain_boundary_linear/build_parameters.py +0 -12
- package/src/py/mat3ra/made/tools/build/defective_structures/one_dimensional/grain_boundary_linear/builder.py +0 -17
- package/src/py/mat3ra/made/tools/build/defective_structures/one_dimensional/grain_boundary_linear/configuration.py +0 -40
- package/src/py/mat3ra/made/tools/build/defective_structures/one_dimensional/grain_boundary_linear/helpers.py +0 -82
- package/src/py/mat3ra/made/tools/build/defective_structures/three_dimensional/__init__.py +0 -1
- package/src/py/mat3ra/made/tools/build/defective_structures/three_dimensional/solid_solution/__init__.py +0 -9
- package/src/py/mat3ra/made/tools/build/defective_structures/three_dimensional/solid_solution/builder.py +0 -37
- package/src/py/mat3ra/made/tools/build/defective_structures/three_dimensional/solid_solution/configuration.py +0 -30
- package/src/py/mat3ra/made/tools/build/defective_structures/three_dimensional/solid_solution/enums.py +0 -8
- package/src/py/mat3ra/made/tools/build/defective_structures/three_dimensional/solid_solution/helpers.py +0 -76
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/adatom/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/adatom/builder.py +0 -11
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/adatom/configuration.py +0 -18
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/adatom/helpers.py +0 -137
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/adatom/types.py +0 -22
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/grain_boundary_planar/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/grain_boundary_planar/builder.py +0 -28
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/grain_boundary_planar/configuration.py +0 -55
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/grain_boundary_planar/helpers.py +0 -75
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/island/builder.py +0 -15
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/island/configuration.py +0 -16
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/island/helpers.py +0 -116
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/terrace/build_parameters.py +0 -10
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/terrace/builder.py +0 -30
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/terrace/configuration.py +0 -11
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/terrace/helpers.py +0 -78
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/pair_defect/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/pair_defect/builder.py +0 -31
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/pair_defect/configuration.py +0 -45
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/pair_defect/helpers.py +0 -80
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/__init__.py +0 -40
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/atom_placement_method_enum.py +0 -14
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/base/__init__.py +0 -7
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/base/builder.py +0 -42
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/base/configuration.py +0 -27
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/complex_defect_type_enum.py +0 -5
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/factories.py +0 -69
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/helpers.py +0 -92
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/interstitial/__init__.py +0 -7
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/interstitial/builder.py +0 -8
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/interstitial/configuration.py +0 -29
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/interstitial/helpers.py +0 -48
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/interstitial/interstitial_placement_method_enum.py +0 -8
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/point_defect_type_enum.py +0 -8
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/substitutional/__init__.py +0 -7
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/substitutional/builder.py +0 -6
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/substitutional/configuration.py +0 -41
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/substitutional/helpers.py +0 -43
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/substitutional/substitution_placement_method_enum.py +0 -7
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/types.py +0 -24
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/vacancy/__init__.py +0 -7
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/vacancy/builder.py +0 -19
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/vacancy/configuration.py +0 -27
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/vacancy/helpers.py +0 -42
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/vacancy/vacancy_placement_method_enum.py +0 -7
- package/src/py/mat3ra/made/tools/build/pristine_structures/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/pristine_structures/three_dimensional/ideal_crystal/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/pristine_structures/three_dimensional/ideal_crystal/builder.py +0 -80
- package/src/py/mat3ra/made/tools/build/pristine_structures/three_dimensional/ideal_crystal/configurations.py +0 -22
- package/src/py/mat3ra/made/tools/build/pristine_structures/three_dimensional/ideal_crystal/helpers.py +0 -40
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanoribbon/__init__.py +0 -29
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanoribbon/build_parameters.py +0 -5
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanoribbon/builders.py +0 -56
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanoribbon/configuration.py +0 -33
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanoribbon/helpers.py +0 -76
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanotape/__init__.py +0 -11
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanotape/build_parameters.py +0 -9
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanotape/builders.py +0 -83
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanotape/configuration.py +0 -35
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanotape/helpers.py +0 -62
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab/__init__.py +0 -9
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab/build_parameters.py +0 -8
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab/builder.py +0 -42
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab/configuration.py +0 -99
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab/helpers.py +0 -95
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab/termination_utils.py +0 -14
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab/utils.py +0 -61
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab_strained_supercell/builder.py +0 -22
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab_strained_supercell/configuration.py +0 -17
- package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/__init__.py +0 -19
- package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/analyzer.py +0 -86
- package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/ase_based/__init__.py +0 -7
- package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/ase_based/builder.py +0 -54
- package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/ase_based/configuration.py +0 -19
- package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/enums.py +0 -42
- package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/helpers.py +0 -127
- package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/merge_based/__init__.py +0 -7
- package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/merge_based/builder.py +0 -33
- package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/merge_based/configuration.py +0 -16
- package/src/py/mat3ra/made/tools/build/processed_structures/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/analyzers/__init__.py +0 -9
- package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/analyzers/coordination_based_passivation_material_analyzer.py +0 -112
- package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/analyzers/passivation_material_analyzer.py +0 -16
- package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/analyzers/surface_passivation_material_analyzer.py +0 -32
- package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/builder.py +0 -23
- package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/configuration.py +0 -31
- package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/enums.py +0 -7
- package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/helpers.py +0 -151
- package/src/py/mat3ra/made/tools/build_components/__init__.py +0 -10
- package/src/py/mat3ra/made/tools/build_components/entities/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/one_dimensional/miller_indices_2d.py +0 -0
- package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/two_dimensional/miller_indices.py +0 -18
- package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/two_dimensional/termination.py +0 -33
- package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/crystal_site/__init__.py +0 -2
- package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/crystal_site/crystal_site.py +0 -24
- package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/crystal_site/crystal_site_list.py +0 -9
- package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/point_defect_site/builder.py +0 -32
- package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/point_defect_site/configuration.py +0 -14
- package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/void_region/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/void_region/builder.py +0 -29
- package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/void_region/configuration.py +0 -19
- package/src/py/mat3ra/made/tools/build_components/entities/core/two_dimensional/vacuum/builder.py +0 -48
- package/src/py/mat3ra/made/tools/build_components/entities/core/two_dimensional/vacuum/configuration.py +0 -17
- package/src/py/mat3ra/made/tools/build_components/entities/core/zero_dimensional/atom/builder.py +0 -25
- package/src/py/mat3ra/made/tools/build_components/entities/core/zero_dimensional/atom/configuration.py +0 -8
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/base_builder/__init__.py +0 -16
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/base_builder/base_configuration_pydantic.py +0 -5
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/base_builder/base_single_builder.py +0 -87
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/base_builder/build_parameters.py +0 -5
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/crystal_lattice_lines/__init__.py +0 -4
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/crystal_lattice_lines/builder.py +0 -46
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/crystal_lattice_lines/configuration.py +0 -19
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/crystal_lattice_lines/edge_types.py +0 -51
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/crystal_lattice_lines/helpers.py +0 -58
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/crystal_lattice_lines_unique_repeated/__init__.py +0 -4
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/crystal_lattice_lines_unique_repeated/builder.py +0 -42
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/crystal_lattice_lines_unique_repeated/configuration.py +0 -21
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/three_dimensional/supercell/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/three_dimensional/supercell/configuration.py +0 -11
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/three_dimensional/supercell/helpers.py +0 -38
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/__init__.py +0 -24
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/atomic_layers_unique_repeated/__init__.py +0 -7
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/atomic_layers_unique_repeated/builder.py +0 -62
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/atomic_layers_unique_repeated/configuration.py +0 -14
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/atomic_layers_unique_repeated/helpers.py +0 -42
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/crystal_lattice_planes/__init__.py +0 -7
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/crystal_lattice_planes/builder.py +0 -39
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/crystal_lattice_planes/configuration.py +0 -24
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/slab_stack/__init__.py +0 -10
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/slab_stack/builder.py +0 -36
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/slab_stack/configuration.py +0 -31
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/slab_stack/helpers.py +0 -80
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/zero_dimensional/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/zero_dimensional/coordinates_shape_enum.py +0 -8
- package/src/py/mat3ra/made/tools/build_components/metadata/__init__.py +0 -2
- package/src/py/mat3ra/made/tools/build_components/metadata/build_metadata.py +0 -7
- package/src/py/mat3ra/made/tools/build_components/metadata/material_build_metadata.py +0 -35
- package/src/py/mat3ra/made/tools/build_components/metadata/material_with_build_metadata.py +0 -8
- package/src/py/mat3ra/made/tools/build_components/mixins/__init__.py +0 -2
- package/src/py/mat3ra/made/tools/build_components/mixins/convert_generated_items_ase_atoms_mixin.py +0 -8
- package/src/py/mat3ra/made/tools/build_components/mixins/convert_generated_items_pymatgen_structure_mixin.py +0 -8
- package/src/py/mat3ra/made/tools/build_components/operations/core/combinations/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build_components/operations/core/combinations/enums.py +0 -11
- package/src/py/mat3ra/made/tools/build_components/operations/core/combinations/merge/__init__.py +0 -6
- package/src/py/mat3ra/made/tools/build_components/operations/core/combinations/merge/build_parameters.py +0 -18
- package/src/py/mat3ra/made/tools/build_components/operations/core/combinations/merge/builder.py +0 -93
- package/src/py/mat3ra/made/tools/build_components/operations/core/combinations/merge/configuration.py +0 -20
- package/src/py/mat3ra/made/tools/build_components/operations/core/combinations/stack/builder.py +0 -83
- package/src/py/mat3ra/made/tools/build_components/operations/core/combinations/stack/configuration.py +0 -24
- package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/__init__.py +0 -15
- package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/build_parameters.py +0 -5
- package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/builders/base.py +0 -33
- package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/builders/isometric.py +0 -25
- package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/configuration.py +0 -24
- package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/functions/__init__.py +0 -13
- package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/functions/atomic_mass_dependent_function_holder.py +0 -32
- package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/functions/function_holder.py +0 -80
- package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/functions/maxwell_boltzmann.py +0 -39
- package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/functions/perturbation_function_holder.py +0 -45
- package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/functions/sine_wave_perturbation_function_holder.py +0 -29
- package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/helpers.py +0 -83
- package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/strain/__init__.py +0 -5
- package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/strain/builder.py +0 -25
- package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/strain/configuration.py +0 -23
- package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/strain/helpers.py +0 -49
- package/src/py/mat3ra/made/tools/build_components/utils.py +0 -44
- package/src/py/mat3ra/made/tools/calculate/__init__.py +0 -149
- package/src/py/mat3ra/made/tools/calculate/ase/__init__.py +0 -133
- package/src/py/mat3ra/made/tools/calculate/ase/constraints.py +0 -91
- package/src/py/mat3ra/made/tools/calculate/calculators/__init__.py +0 -4
- package/src/py/mat3ra/made/tools/calculate/calculators/interface_material_calculator.py +0 -70
- package/src/py/mat3ra/made/tools/calculate/calculators/interface_material_calculator_parameters.py +0 -14
- package/src/py/mat3ra/made/tools/calculate/calculators/material_calculator.py +0 -32
- package/src/py/mat3ra/made/tools/calculate/calculators/material_calculator_parameters.py +0 -17
- package/src/py/mat3ra/made/tools/calculate/interaction_functions.py +0 -23
- package/src/py/mat3ra/made/tools/convert/__init__.py +0 -286
- package/src/py/mat3ra/made/tools/convert/interface_parts_enum.py +0 -9
- package/src/py/mat3ra/made/tools/convert/utils.py +0 -96
- package/src/py/mat3ra/made/tools/entities/__init__.py +0 -5
- package/src/py/mat3ra/made/tools/entities/coordinate/__init__.py +0 -14
- package/src/py/mat3ra/made/tools/entities/coordinate/box_coordinate_condition.py +0 -15
- package/src/py/mat3ra/made/tools/entities/coordinate/coordinate_condition.py +0 -16
- package/src/py/mat3ra/made/tools/entities/coordinate/coordinate_functions.py +0 -158
- package/src/py/mat3ra/made/tools/entities/coordinate/cylinder_coordinate_condition.py +0 -17
- package/src/py/mat3ra/made/tools/entities/coordinate/plane_coordinate_condition.py +0 -14
- package/src/py/mat3ra/made/tools/entities/coordinate/sphere_coordinate_condition.py +0 -15
- package/src/py/mat3ra/made/tools/entities/coordinate/triangular_prism_coordinate_condition.py +0 -26
- package/src/py/mat3ra/made/tools/entities/termination_holder.py +0 -12
- package/src/py/mat3ra/made/tools/helpers.py +0 -168
- package/src/py/mat3ra/made/tools/modify.py +0 -627
- package/src/py/mat3ra/made/tools/operations/core/binary.py +0 -106
- package/src/py/mat3ra/made/tools/operations/core/unary.py +0 -170
- package/src/py/mat3ra/made/tools/operations/core/utils.py +0 -138
- package/src/py/mat3ra/made/tools/operations/reusable/unary.py +0 -53
- package/src/py/mat3ra/made/tools/optimize.py +0 -55
- package/src/py/mat3ra/made/tools/third_party.py +0 -69
- package/src/py/mat3ra/made/tools/utils.py +0 -182
- package/src/py/mat3ra/made/utils.py +0 -144
- package/tests/.gitattributes +0 -1
- package/tests/fixtures/AsGe-basis.json +0 -3
- package/tests/fixtures/C2H4-translated.json +0 -3
- package/tests/fixtures/C2H4.json +0 -3
- package/tests/fixtures/FeLiSi-basis.json +0 -3
- package/tests/fixtures/FeO.json +0 -3
- package/tests/fixtures/Ge2-basis.json +0 -3
- package/tests/fixtures/Graphene.json +0 -3
- package/tests/fixtures/Graphene.poscar +0 -3
- package/tests/fixtures/H2+H-final.json +0 -3
- package/tests/fixtures/H2+H-image.json +0 -3
- package/tests/fixtures/H2+H-initial.json +0 -3
- package/tests/fixtures/H2O.poscar +0 -3
- package/tests/fixtures/LiFeSi-basis-labels.json +0 -3
- package/tests/fixtures/LiFeSi-basis.json +0 -3
- package/tests/fixtures/Na.json +0 -3
- package/tests/fixtures/Na4Cl4-cartesian.json +0 -3
- package/tests/fixtures/Na4Cl4.json +0 -3
- package/tests/fixtures/Na4Cl4.poscar +0 -3
- package/tests/fixtures/Ni-hex.json +0 -3
- package/tests/fixtures/Ni-hex.poscar +0 -3
- package/tests/fixtures/OSi-basis.json +0 -3
- package/tests/fixtures/Si-hex.poscar +0 -3
- package/tests/fixtures/Si-pwscf.in +0 -3
- package/tests/fixtures/Si-slab.json +0 -3
- package/tests/fixtures/Si-supercell.json +0 -3
- package/tests/fixtures/Si2-basis-repeated.json +0 -3
- package/tests/fixtures/Si2-basis.json +0 -3
- package/tests/fixtures/Zr1H23Zr1H1.json +0 -3
- package/tests/fixtures/Zr1H23Zr1H1.poscar +0 -3
- package/tests/fixtures/atomic-constraints.json +0 -3
- package/tests/fixtures/hashes.json +0 -3
- package/tests/fixtures/si-slab-100.json +0 -3
- package/tests/fixtures/si-slab-111-0-vacuum.json +0 -3
- package/tests/fixtures/si-slab-111-0.5-vacuum-gamma-120.json +0 -3
- package/tests/fixtures/si-slab-111-0.5-vacuum-ratio.json +0 -3
- package/tests/fixtures/si-standata.json +0 -3
- package/tests/js/basis/basis.ts +0 -247
- package/tests/js/cell/cell.ts +0 -182
- package/tests/js/cell/primitive_cell.ts +0 -21
- package/tests/js/constraints/constraints.ts +0 -11
- package/tests/js/fixtures.ts +0 -123
- package/tests/js/lattice/lattice.ts +0 -43
- package/tests/js/lattice/lattice_reciprocal.ts +0 -104
- package/tests/js/material/material.ts +0 -161
- package/tests/js/parsers/espresso.ts +0 -12
- package/tests/js/parsers/native_formats.ts +0 -35
- package/tests/js/parsers/poscar.ts +0 -89
- package/tests/js/parsers/xyz.ts +0 -33
- package/tests/js/parsers/xyz_combinatorial_basis.ts +0 -156
- package/tests/js/register-esse-schemas.cjs +0 -10
- package/tests/js/setup.ts +0 -6
- package/tests/js/tools/basis.ts +0 -22
- package/tests/js/tools/supercell.ts +0 -58
- package/tests/js/tools/surface.ts +0 -111
- package/tests/py/conftest.py +0 -34
- package/tests/py/mat3ra/debug_utils.py +0 -75
- package/tests/py/unit/__init__.py +0 -0
- package/tests/py/unit/fixtures/__init__.py +0 -0
- package/tests/py/unit/fixtures/adatom.py +0 -60
- package/tests/py/unit/fixtures/bulk.py +0 -162
- package/tests/py/unit/fixtures/cuts.py +0 -118
- package/tests/py/unit/fixtures/grain_boundary.py +0 -875
- package/tests/py/unit/fixtures/interface/commensurate.py +0 -498
- package/tests/py/unit/fixtures/interface/gaas_dia.py +0 -837
- package/tests/py/unit/fixtures/interface/gr_ni_111_top_hcp.py +0 -123
- package/tests/py/unit/fixtures/interface/simple.py +0 -84
- package/tests/py/unit/fixtures/interface/twisted_nanoribbons.py +0 -131
- package/tests/py/unit/fixtures/interface/zsl.py +0 -756
- package/tests/py/unit/fixtures/island.py +0 -336
- package/tests/py/unit/fixtures/merge.py +0 -147
- package/tests/py/unit/fixtures/monolayer.py +0 -46
- package/tests/py/unit/fixtures/nanoparticle.py +0 -116
- package/tests/py/unit/fixtures/nanoribbon/__init__.py +0 -0
- package/tests/py/unit/fixtures/nanoribbon/armchair.py +0 -102
- package/tests/py/unit/fixtures/nanoribbon/nanoribbon.py +0 -145
- package/tests/py/unit/fixtures/nanoribbon/zigzag.py +0 -54
- package/tests/py/unit/fixtures/pair_defects.py +0 -41
- package/tests/py/unit/fixtures/passivated/nanoribbon.py +0 -69
- package/tests/py/unit/fixtures/passivated/slab.py +0 -58
- package/tests/py/unit/fixtures/point_defects.py +0 -158
- package/tests/py/unit/fixtures/slab.py +0 -606
- package/tests/py/unit/fixtures/strain.py +0 -42
- package/tests/py/unit/fixtures/supercell.py +0 -64
- package/tests/py/unit/fixtures/terrace.py +0 -70
- package/tests/py/unit/fixtures/thrid_party/ase_atoms.py +0 -13
- package/tests/py/unit/test_analyze_lattice_planes.py +0 -131
- package/tests/py/unit/test_cell.py +0 -104
- package/tests/py/unit/test_data_files.py +0 -68
- package/tests/py/unit/test_lattice.py +0 -103
- package/tests/py/unit/test_lattice_type_extended.py +0 -53
- package/tests/py/unit/test_material.py +0 -158
- package/tests/py/unit/test_operations.py +0 -126
- package/tests/py/unit/test_primitive_cell.py +0 -118
- package/tests/py/unit/test_reciprocal_lattice.py +0 -86
- package/tests/py/unit/test_reciprocal_paths.py +0 -64
- package/tests/py/unit/test_symmetry_points.py +0 -151
- package/tests/py/unit/test_tools_analyze.py +0 -219
- package/tests/py/unit/test_tools_analyze_basis.py +0 -105
- package/tests/py/unit/test_tools_analyze_interface.py +0 -223
- package/tests/py/unit/test_tools_analyze_interface_material.py +0 -63
- package/tests/py/unit/test_tools_analyze_interface_zsl.py +0 -187
- package/tests/py/unit/test_tools_analyze_lattice.py +0 -74
- package/tests/py/unit/test_tools_analyze_swap.py +0 -80
- package/tests/py/unit/test_tools_build.py +0 -158
- package/tests/py/unit/test_tools_build_defect/__init__.py +0 -0
- package/tests/py/unit/test_tools_build_defect/test_adatom.py +0 -84
- package/tests/py/unit/test_tools_build_defect/test_island.py +0 -45
- package/tests/py/unit/test_tools_build_defect/test_pair_defect.py +0 -84
- package/tests/py/unit/test_tools_build_defect/test_point_defect.py +0 -196
- package/tests/py/unit/test_tools_build_defect/test_slab_stack.py +0 -30
- package/tests/py/unit/test_tools_build_defect/test_solid_solution.py +0 -90
- package/tests/py/unit/test_tools_build_defect/test_terrace.py +0 -44
- package/tests/py/unit/test_tools_build_grain_boundary.py +0 -133
- package/tests/py/unit/test_tools_build_heterostructure.py +0 -46
- package/tests/py/unit/test_tools_build_interface.py +0 -292
- package/tests/py/unit/test_tools_build_interface_zsl.py +0 -263
- package/tests/py/unit/test_tools_build_maxwell_disorder.py +0 -123
- package/tests/py/unit/test_tools_build_metadata.py +0 -79
- package/tests/py/unit/test_tools_build_monolayer.py +0 -33
- package/tests/py/unit/test_tools_build_nanoparticle.py +0 -42
- package/tests/py/unit/test_tools_build_nanoribbon.py +0 -45
- package/tests/py/unit/test_tools_build_passivation.py +0 -85
- package/tests/py/unit/test_tools_build_perturbation.py +0 -103
- package/tests/py/unit/test_tools_build_slab.py +0 -382
- package/tests/py/unit/test_tools_build_strain.py +0 -36
- package/tests/py/unit/test_tools_build_supercell.py +0 -47
- package/tests/py/unit/test_tools_calculate.py +0 -67
- package/tests/py/unit/test_tools_convert.py +0 -174
- package/tests/py/unit/test_tools_modify.py +0 -248
- package/tests/py/unit/utils.py +0 -142
- package/tsconfig-transpile.json +0 -3
- package/tsconfig.json +0 -3
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
from typing import Union, List
|
|
2
|
-
|
|
3
|
-
from mat3ra.made.material import Material
|
|
4
|
-
from ......analyze.crystal_site.crystal_site_analyzer import CrystalSiteAnalyzer
|
|
5
|
-
from ......analyze.crystal_site.voronoi_crystal_site_analyzer import VoronoiCrystalSiteAnalyzer
|
|
6
|
-
from .builder import InterstitialDefectBuilder
|
|
7
|
-
from .configuration import InterstitialDefectConfiguration
|
|
8
|
-
from .interstitial_placement_method_enum import InterstitialPlacementMethodEnum
|
|
9
|
-
from ......build_components import MaterialWithBuildMetadata
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
def create_defect_point_interstitial(
|
|
13
|
-
material: Union[Material, MaterialWithBuildMetadata],
|
|
14
|
-
coordinate: List[float],
|
|
15
|
-
element: str,
|
|
16
|
-
placement_method: str,
|
|
17
|
-
use_cartesian_coordinates: bool = False,
|
|
18
|
-
) -> Material:
|
|
19
|
-
"""
|
|
20
|
-
Create an interstitial defect in the given material.
|
|
21
|
-
|
|
22
|
-
Args:
|
|
23
|
-
material (Material): The host material.
|
|
24
|
-
coordinate (List[float]): The coordinate where the interstitial atom will be placed.
|
|
25
|
-
element (str): The chemical element of the interstitial atom.
|
|
26
|
-
placement_method (InterstitialPlacementMethodEnum): Method to resolve the final coordinate.
|
|
27
|
-
use_cartesian_coordinates (bool): Whether the input coordinate is in Cartesian units.
|
|
28
|
-
|
|
29
|
-
Returns:
|
|
30
|
-
Material: A new material with the interstitial defect.
|
|
31
|
-
"""
|
|
32
|
-
if use_cartesian_coordinates:
|
|
33
|
-
coordinate = material.basis.cell.convert_point_to_crystal(coordinate)
|
|
34
|
-
|
|
35
|
-
if placement_method == InterstitialPlacementMethodEnum.VORONOI_SITE.value:
|
|
36
|
-
analyzer = VoronoiCrystalSiteAnalyzer(material=material, coordinate=coordinate)
|
|
37
|
-
resolved_coordinate = analyzer.voronoi_site_coordinate
|
|
38
|
-
elif placement_method == InterstitialPlacementMethodEnum.EXACT_COORDINATE.value:
|
|
39
|
-
analyzer = CrystalSiteAnalyzer(material=material, coordinate=coordinate)
|
|
40
|
-
resolved_coordinate = analyzer.exact_coordinate
|
|
41
|
-
else:
|
|
42
|
-
raise ValueError(f"Unsupported placement method for interstitial: {placement_method}")
|
|
43
|
-
|
|
44
|
-
config = InterstitialDefectConfiguration.from_parameters(
|
|
45
|
-
crystal=material, coordinate=resolved_coordinate, element=element
|
|
46
|
-
)
|
|
47
|
-
builder = InterstitialDefectBuilder()
|
|
48
|
-
return builder.get_material(config)
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
from typing import Union, List
|
|
2
|
-
|
|
3
|
-
from mat3ra.esse.models.materials_category.defective_structures.zero_dimensional.point_defect.substitutional import (
|
|
4
|
-
SubstitutionalPointDefectSchema,
|
|
5
|
-
)
|
|
6
|
-
from mat3ra.esse.models.materials_category_components.entities.core.zero_dimensional.atom import AtomSchema
|
|
7
|
-
from mat3ra.esse.models.materials_category_components.operations.core.combinations.merge import MergeMethodsEnum
|
|
8
|
-
|
|
9
|
-
from mat3ra.made.material import Material
|
|
10
|
-
from mat3ra.made.tools.analyze.other import get_closest_site_id_from_coordinate
|
|
11
|
-
from ..base.configuration import PointDefectConfiguration
|
|
12
|
-
from ......build_components import MaterialWithBuildMetadata
|
|
13
|
-
from ......build_components.entities.auxiliary.zero_dimensional.point_defect_site.configuration import (
|
|
14
|
-
PointDefectSiteConfiguration,
|
|
15
|
-
)
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
def _host_atom_label_at_coordinate(
|
|
19
|
-
crystal: Union[Material, MaterialWithBuildMetadata], coordinate: List[float]
|
|
20
|
-
) -> Union[int, str, None]:
|
|
21
|
-
host_labels = crystal.basis.labels.values
|
|
22
|
-
if not host_labels:
|
|
23
|
-
return None
|
|
24
|
-
site_index = get_closest_site_id_from_coordinate(crystal, coordinate)
|
|
25
|
-
return host_labels[site_index]
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
class SubstitutionalDefectConfiguration(PointDefectConfiguration, SubstitutionalPointDefectSchema):
|
|
29
|
-
type: str = "SubstitutionalDefectConfiguration"
|
|
30
|
-
|
|
31
|
-
@classmethod
|
|
32
|
-
def from_parameters(
|
|
33
|
-
cls, crystal: Union[Material, MaterialWithBuildMetadata], coordinate: List[float], element: str, **kwargs
|
|
34
|
-
):
|
|
35
|
-
substitution_site = PointDefectSiteConfiguration(
|
|
36
|
-
crystal=crystal,
|
|
37
|
-
element=AtomSchema(chemical_element=element),
|
|
38
|
-
coordinate=coordinate,
|
|
39
|
-
host_atom_label=_host_atom_label_at_coordinate(crystal, coordinate),
|
|
40
|
-
)
|
|
41
|
-
return cls(merge_components=[crystal, substitution_site], merge_method=MergeMethodsEnum.REPLACE, **kwargs)
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
from typing import Union, List
|
|
2
|
-
|
|
3
|
-
from mat3ra.made.material import Material
|
|
4
|
-
from .builder import SubstitutionalDefectBuilder
|
|
5
|
-
from .configuration import SubstitutionalDefectConfiguration
|
|
6
|
-
from .substitution_placement_method_enum import SubstitutionPlacementMethodEnum
|
|
7
|
-
from ......analyze.crystal_site.crystal_site_analyzer import CrystalSiteAnalyzer
|
|
8
|
-
from ......build_components import MaterialWithBuildMetadata
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
def create_defect_point_substitution(
|
|
12
|
-
material: Union[Material, MaterialWithBuildMetadata],
|
|
13
|
-
coordinate: List[float],
|
|
14
|
-
element: str,
|
|
15
|
-
placement_method: str,
|
|
16
|
-
use_cartesian_coordinates: bool = False,
|
|
17
|
-
) -> Material:
|
|
18
|
-
"""
|
|
19
|
-
Create a substitution defect in the given material.
|
|
20
|
-
|
|
21
|
-
Args:
|
|
22
|
-
material (Material): The host material.
|
|
23
|
-
coordinate (List[float]): The coordinate of the atom to be substituted.
|
|
24
|
-
element (str): The chemical element to substitute with.
|
|
25
|
-
placement_method (SubstitutionPlacementMethodEnum): Method to resolve the final coordinate.
|
|
26
|
-
use_cartesian_coordinates (bool): Whether the input coordinate is in Cartesian units.
|
|
27
|
-
|
|
28
|
-
Returns:
|
|
29
|
-
Material: A new material with the substitution defect.
|
|
30
|
-
"""
|
|
31
|
-
if placement_method not in [e.value for e in SubstitutionPlacementMethodEnum]:
|
|
32
|
-
raise ValueError(f"Unsupported placement method: {placement_method}")
|
|
33
|
-
|
|
34
|
-
if use_cartesian_coordinates:
|
|
35
|
-
coordinate = material.basis.cell.convert_point_to_crystal(coordinate)
|
|
36
|
-
|
|
37
|
-
analyzer = CrystalSiteAnalyzer(material=material, coordinate=coordinate)
|
|
38
|
-
resolved_coordinate = analyzer.closest_site_coordinate
|
|
39
|
-
config = SubstitutionalDefectConfiguration.from_parameters(
|
|
40
|
-
crystal=material, coordinate=resolved_coordinate, element=element
|
|
41
|
-
)
|
|
42
|
-
builder = SubstitutionalDefectBuilder()
|
|
43
|
-
return builder.get_material(config)
|
package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/types.py
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
from typing import List, Literal, Optional
|
|
2
|
-
|
|
3
|
-
from pydantic import BaseModel, Field
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
class PointDefectDict(BaseModel):
|
|
7
|
-
"""
|
|
8
|
-
Pydantic model for point defect configurations used with create_multiple_defects.
|
|
9
|
-
|
|
10
|
-
Required fields:
|
|
11
|
-
type: The type of defect ("vacancy", "substitution", "interstitial")
|
|
12
|
-
coordinate: Position coordinates as [x, y, z] list
|
|
13
|
-
|
|
14
|
-
Optional fields:
|
|
15
|
-
element: Chemical element (required for substitution and interstitial)
|
|
16
|
-
placement_method: Method for placing the defect
|
|
17
|
-
use_cartesian_coordinates: Whether coordinates are in Cartesian units
|
|
18
|
-
"""
|
|
19
|
-
|
|
20
|
-
type: Literal["vacancy", "substitution", "interstitial"]
|
|
21
|
-
coordinate: List[float] = Field(..., min_items=3, max_items=3, description="Position coordinates as [x, y, z]")
|
|
22
|
-
element: Optional[str] = None
|
|
23
|
-
placement_method: Optional[Literal["closest_site", "exact_coordinate", "voronoi_site"]] = None
|
|
24
|
-
use_cartesian_coordinates: bool = False
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
from typing import Optional, Any
|
|
2
|
-
|
|
3
|
-
from .configuration import VacancyDefectConfiguration
|
|
4
|
-
from ..base.builder import PointDefectBuilder
|
|
5
|
-
from ......build_components import MaterialWithBuildMetadata, TypeConfiguration
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
class VacancyDefectBuilder(PointDefectBuilder):
|
|
9
|
-
_ConfigurationType = VacancyDefectConfiguration
|
|
10
|
-
|
|
11
|
-
def _post_process(
|
|
12
|
-
self,
|
|
13
|
-
material: MaterialWithBuildMetadata,
|
|
14
|
-
post_process_parameters: Optional[Any] = None,
|
|
15
|
-
configuration: Optional[TypeConfiguration] = None,
|
|
16
|
-
) -> MaterialWithBuildMetadata:
|
|
17
|
-
material = super()._post_process(material, post_process_parameters, configuration)
|
|
18
|
-
material.basis.remove_atoms_by_elements("Vac")
|
|
19
|
-
return material
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
from typing import Union, List
|
|
2
|
-
|
|
3
|
-
from mat3ra.esse.models.materials_category.defective_structures.zero_dimensional.point_defect.vacancy import (
|
|
4
|
-
VacancyPointDefectSchema,
|
|
5
|
-
)
|
|
6
|
-
from mat3ra.esse.models.materials_category_components.entities.core.zero_dimensional.vacancy import VacancySchema
|
|
7
|
-
from mat3ra.esse.models.materials_category_components.operations.core.combinations.merge import MergeMethodsEnum
|
|
8
|
-
|
|
9
|
-
from mat3ra.made.material import Material
|
|
10
|
-
from ..base.configuration import PointDefectConfiguration
|
|
11
|
-
from ......build_components import MaterialWithBuildMetadata
|
|
12
|
-
from ......build_components.entities.auxiliary.zero_dimensional.point_defect_site.configuration import (
|
|
13
|
-
PointDefectSiteConfiguration,
|
|
14
|
-
)
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
class VacancyDefectConfiguration(PointDefectConfiguration, VacancyPointDefectSchema):
|
|
18
|
-
type: str = "VacancyDefectConfiguration"
|
|
19
|
-
|
|
20
|
-
@classmethod
|
|
21
|
-
def from_parameters(cls, crystal: Union[Material, MaterialWithBuildMetadata], coordinate: List[float], **kwargs):
|
|
22
|
-
point_defect_site = PointDefectSiteConfiguration(
|
|
23
|
-
crystal=crystal,
|
|
24
|
-
element=VacancySchema(),
|
|
25
|
-
coordinate=coordinate,
|
|
26
|
-
)
|
|
27
|
-
return cls(merge_components=[crystal, point_defect_site], merge_method=MergeMethodsEnum.REPLACE, **kwargs)
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
from typing import Union, List
|
|
2
|
-
|
|
3
|
-
from mat3ra.made.material import Material
|
|
4
|
-
from ......analyze.crystal_site.crystal_site_analyzer import CrystalSiteAnalyzer
|
|
5
|
-
from .....defective_structures.zero_dimensional.point_defect.vacancy.builder import VacancyDefectBuilder
|
|
6
|
-
from .....defective_structures.zero_dimensional.point_defect.vacancy.configuration import VacancyDefectConfiguration
|
|
7
|
-
from .....defective_structures.zero_dimensional.point_defect.vacancy.vacancy_placement_method_enum import (
|
|
8
|
-
VacancyPlacementMethodEnum,
|
|
9
|
-
)
|
|
10
|
-
from ......build_components import MaterialWithBuildMetadata
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
def create_defect_point_vacancy(
|
|
14
|
-
material: Union[Material, MaterialWithBuildMetadata],
|
|
15
|
-
coordinate: List[float],
|
|
16
|
-
placement_method: str,
|
|
17
|
-
use_cartesian_coordinates: bool = False,
|
|
18
|
-
) -> Material:
|
|
19
|
-
"""
|
|
20
|
-
Create a vacancy defect in the given material at the specified coordinate.
|
|
21
|
-
|
|
22
|
-
Args:
|
|
23
|
-
material (Material): The host material.
|
|
24
|
-
coordinate (List[float]): The coordinate where the vacancy will be created.
|
|
25
|
-
placement_method (VacancyPlacementMethodEnum): Method to resolve the final coordinate.
|
|
26
|
-
use_cartesian_coordinates (bool): Whether the input coordinate is in Cartesian units.
|
|
27
|
-
|
|
28
|
-
Returns:
|
|
29
|
-
Material: A new material with the vacancy defect.
|
|
30
|
-
"""
|
|
31
|
-
if placement_method not in [e.value for e in VacancyPlacementMethodEnum]:
|
|
32
|
-
raise ValueError(f"Unsupported placement method: {placement_method}")
|
|
33
|
-
|
|
34
|
-
# Convert coordinate to crystal if needed
|
|
35
|
-
if use_cartesian_coordinates:
|
|
36
|
-
coordinate = material.basis.cell.convert_point_to_crystal(coordinate)
|
|
37
|
-
|
|
38
|
-
analyzer = CrystalSiteAnalyzer(material=material, coordinate=coordinate)
|
|
39
|
-
resolved_coordinate = analyzer.closest_site_coordinate
|
|
40
|
-
config = VacancyDefectConfiguration.from_parameters(crystal=material, coordinate=resolved_coordinate)
|
|
41
|
-
builder = VacancyDefectBuilder()
|
|
42
|
-
return builder.get_material(config)
|
|
File without changes
|
|
File without changes
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
from typing import Optional, Any, Union, Tuple
|
|
2
|
-
|
|
3
|
-
from mat3ra.made.material import Material
|
|
4
|
-
from .....build_components import MaterialWithBuildMetadata, TypeConfiguration
|
|
5
|
-
from mat3ra.made.tools.build.pristine_structures.two_dimensional.slab.builder import SlabBuilder
|
|
6
|
-
from mat3ra.made.tools.build.pristine_structures.two_dimensional.slab.configuration import SlabConfiguration
|
|
7
|
-
from .....modify import translate_to_z_level, filter_by_box
|
|
8
|
-
from .configurations import MonolayerConfiguration
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
class MonolayerBuilder(SlabBuilder):
|
|
12
|
-
"""
|
|
13
|
-
Builder for creating monolayer structures from crystal materials.
|
|
14
|
-
|
|
15
|
-
The builder creates different monolayer structures based on the crystal type:
|
|
16
|
-
- HEX: Creates a slab with Miller indices (0,0,1), thickness=1, then filters half
|
|
17
|
-
- FCC/CUB: Creates a slab with Miller indices (1,1,1), thickness=1 using primitive cell
|
|
18
|
-
"""
|
|
19
|
-
|
|
20
|
-
_ConfigurationType = MonolayerConfiguration
|
|
21
|
-
_GeneratedItemType = Material
|
|
22
|
-
|
|
23
|
-
def _get_miller_indices_for_lattice_type(self, crystal) -> Tuple[int, int, int]:
|
|
24
|
-
lattice_type_str = str(crystal.lattice.type.value)
|
|
25
|
-
|
|
26
|
-
if lattice_type_str == "HEX":
|
|
27
|
-
return (0, 0, 1)
|
|
28
|
-
else:
|
|
29
|
-
return (1, 1, 1)
|
|
30
|
-
|
|
31
|
-
def _generate(self, configuration: MonolayerConfiguration) -> Material:
|
|
32
|
-
crystal = configuration.crystal
|
|
33
|
-
miller_indices = self._get_miller_indices_for_lattice_type(crystal)
|
|
34
|
-
vacuum = configuration.vacuum
|
|
35
|
-
|
|
36
|
-
slab_config = SlabConfiguration.from_parameters(
|
|
37
|
-
material_or_dict=crystal,
|
|
38
|
-
miller_indices=miller_indices,
|
|
39
|
-
number_of_layers=1,
|
|
40
|
-
vacuum=vacuum,
|
|
41
|
-
use_conventional_cell=False,
|
|
42
|
-
)
|
|
43
|
-
slab = super()._generate(slab_config)
|
|
44
|
-
|
|
45
|
-
lattice_type_str = crystal.lattice.type.value
|
|
46
|
-
if lattice_type_str == "HEX":
|
|
47
|
-
slab = self._apply_hex_filtering(slab)
|
|
48
|
-
|
|
49
|
-
return slab
|
|
50
|
-
|
|
51
|
-
def _apply_hex_filtering(self, slab: Material) -> Material:
|
|
52
|
-
centered_slab = translate_to_z_level(slab, z_level="center")
|
|
53
|
-
|
|
54
|
-
half_filtered_slab = filter_by_box(
|
|
55
|
-
centered_slab, min_coordinate=[0, 0, 0.0], max_coordinate=[1, 1, 0.5], use_cartesian_coordinates=False
|
|
56
|
-
)
|
|
57
|
-
|
|
58
|
-
return half_filtered_slab
|
|
59
|
-
|
|
60
|
-
# TODO: we need to move this to a common place for this and CLPBuilder
|
|
61
|
-
def _enforce_convention(self, material: Union[Material, MaterialWithBuildMetadata]) -> Material:
|
|
62
|
-
return translate_to_z_level(material, "bottom")
|
|
63
|
-
|
|
64
|
-
def _post_process(
|
|
65
|
-
self,
|
|
66
|
-
item: Material,
|
|
67
|
-
post_process_parameters: Optional[Any] = None,
|
|
68
|
-
configuration: Optional[TypeConfiguration] = None,
|
|
69
|
-
) -> Material:
|
|
70
|
-
item = super()._post_process(item, post_process_parameters, configuration)
|
|
71
|
-
return self._enforce_convention(item)
|
|
72
|
-
|
|
73
|
-
def _update_material_name(
|
|
74
|
-
self, material: Union[Material, MaterialWithBuildMetadata], configuration: MonolayerConfiguration
|
|
75
|
-
) -> Material:
|
|
76
|
-
crystal = configuration.crystal
|
|
77
|
-
|
|
78
|
-
original_name = crystal.name or "Crystal"
|
|
79
|
-
material.name = f"{original_name} - Monolayer"
|
|
80
|
-
return material
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
from typing import Union
|
|
2
|
-
|
|
3
|
-
from mat3ra.made.material import Material
|
|
4
|
-
from .....build_components import MaterialWithBuildMetadata
|
|
5
|
-
from mat3ra.made.tools.build_components.entities.reusable.base_builder import BaseConfigurationPydantic
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
class MonolayerConfiguration(BaseConfigurationPydantic):
|
|
9
|
-
"""
|
|
10
|
-
Configuration for creating monolayer structures.
|
|
11
|
-
|
|
12
|
-
Miller indices are automatically determined based on crystal type:
|
|
13
|
-
- HEX crystals: (0, 0, 1)
|
|
14
|
-
- FCC/CUB crystals: (1, 1, 1) with primitive cell
|
|
15
|
-
|
|
16
|
-
Args:
|
|
17
|
-
crystal: The crystal material to create the monolayer from.
|
|
18
|
-
vacuum: Size of the vacuum layer in Angstroms.
|
|
19
|
-
"""
|
|
20
|
-
|
|
21
|
-
crystal: Union[Material, MaterialWithBuildMetadata]
|
|
22
|
-
vacuum: float = 10.0
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
from typing import Union
|
|
2
|
-
|
|
3
|
-
from mat3ra.made.material import Material
|
|
4
|
-
from .....build_components import MaterialWithBuildMetadata
|
|
5
|
-
from .builder import MonolayerBuilder
|
|
6
|
-
from .configurations import MonolayerConfiguration
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
def create_monolayer(
|
|
10
|
-
crystal: Union[Material, MaterialWithBuildMetadata],
|
|
11
|
-
vacuum: float = 10.0,
|
|
12
|
-
) -> Material:
|
|
13
|
-
"""
|
|
14
|
-
Creates a monolayer material from a crystal material.
|
|
15
|
-
|
|
16
|
-
Miller indices are automatically determined based on crystal type:
|
|
17
|
-
- HEX crystals: (0, 0, 1) - basal plane
|
|
18
|
-
- FCC/CUB crystals: (1, 1, 1) with primitive cell
|
|
19
|
-
- Other types: (1, 1, 1) as generic fallback
|
|
20
|
-
|
|
21
|
-
The function creates different monolayer structures based on the crystal type:
|
|
22
|
-
- HEX: Creates a slab with thickness=1, translates to center, then filters half
|
|
23
|
-
- FCC/CUB: Creates a slab with thickness=1 using primitive cell, then applies
|
|
24
|
-
specific filtering and centering operations
|
|
25
|
-
|
|
26
|
-
Args:
|
|
27
|
-
crystal: The crystal material to create the monolayer from.
|
|
28
|
-
vacuum: Size of the vacuum layer in Angstroms (default: 10.0).
|
|
29
|
-
|
|
30
|
-
Returns:
|
|
31
|
-
Material: The generated monolayer material.
|
|
32
|
-
|
|
33
|
-
"""
|
|
34
|
-
configuration = MonolayerConfiguration(
|
|
35
|
-
crystal=crystal,
|
|
36
|
-
vacuum=vacuum,
|
|
37
|
-
)
|
|
38
|
-
|
|
39
|
-
builder = MonolayerBuilder()
|
|
40
|
-
return builder.get_material(configuration)
|
|
File without changes
|
package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanoribbon/__init__.py
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
from .....build_components.entities.reusable.one_dimensional.crystal_lattice_lines import (
|
|
2
|
-
CrystalLatticeLinesBuilder,
|
|
3
|
-
CrystalLatticeLinesConfiguration,
|
|
4
|
-
)
|
|
5
|
-
from .....build_components.entities.reusable.one_dimensional.crystal_lattice_lines.edge_types import (
|
|
6
|
-
EdgeTypesEnum,
|
|
7
|
-
)
|
|
8
|
-
from .....build_components.entities.reusable.one_dimensional.crystal_lattice_lines_unique_repeated import (
|
|
9
|
-
CrystalLatticeLinesRepeatedBuilder,
|
|
10
|
-
)
|
|
11
|
-
from .....build_components.entities.reusable.one_dimensional.crystal_lattice_lines_unique_repeated import (
|
|
12
|
-
CrystalLatticeLinesUniqueRepeatedConfiguration,
|
|
13
|
-
)
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
from .configuration import NanoribbonConfiguration
|
|
17
|
-
from .helpers import (
|
|
18
|
-
create_nanoribbon,
|
|
19
|
-
)
|
|
20
|
-
|
|
21
|
-
__all__ = [
|
|
22
|
-
"CrystalLatticeLinesConfiguration",
|
|
23
|
-
"CrystalLatticeLinesUniqueRepeatedConfiguration",
|
|
24
|
-
"NanoribbonConfiguration",
|
|
25
|
-
"CrystalLatticeLinesBuilder",
|
|
26
|
-
"CrystalLatticeLinesRepeatedBuilder",
|
|
27
|
-
"create_nanoribbon",
|
|
28
|
-
"EdgeTypesEnum",
|
|
29
|
-
]
|
package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanoribbon/builders.py
DELETED
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
from typing import Optional, Any, Type, Union
|
|
2
|
-
|
|
3
|
-
from mat3ra.made.material import Material
|
|
4
|
-
from . import NanoribbonConfiguration
|
|
5
|
-
from .build_parameters import NanoribbonBuilderParameters
|
|
6
|
-
from ..nanotape import NanoTapeBuilder, NanoTapeConfiguration
|
|
7
|
-
from .....build_components import MaterialWithBuildMetadata, TypeConfiguration
|
|
8
|
-
from .....build_components.entities.reusable.one_dimensional.crystal_lattice_lines.edge_types import (
|
|
9
|
-
get_edge_type_from_miller_indices,
|
|
10
|
-
)
|
|
11
|
-
from .....modify import translate_to_center
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
class NanoribbonBuilder(NanoTapeBuilder):
|
|
15
|
-
_ConfigurationType: Type[NanoribbonConfiguration] = NanoribbonConfiguration
|
|
16
|
-
_BuilderParametersType: Type[NanoribbonBuilderParameters] = NanoribbonBuilderParameters
|
|
17
|
-
_DefaultBuildParameters = NanoribbonBuilderParameters(
|
|
18
|
-
use_rectangular_lattice=True,
|
|
19
|
-
)
|
|
20
|
-
|
|
21
|
-
@property
|
|
22
|
-
def stack_component_types_conversion_map(self):
|
|
23
|
-
return {**super().stack_component_types_conversion_map, NanoTapeConfiguration: NanoTapeBuilder}
|
|
24
|
-
|
|
25
|
-
def _post_process(
|
|
26
|
-
self,
|
|
27
|
-
item: Material,
|
|
28
|
-
post_process_parameters: Optional[Any] = None,
|
|
29
|
-
configuration: Optional[TypeConfiguration] = None,
|
|
30
|
-
) -> Material:
|
|
31
|
-
item = super()._post_process(item, post_process_parameters, configuration)
|
|
32
|
-
item = translate_to_center(item, axes=["x", "y"])
|
|
33
|
-
return item
|
|
34
|
-
|
|
35
|
-
def _update_material_name(
|
|
36
|
-
self, material: Union[Material, MaterialWithBuildMetadata], configuration: Any
|
|
37
|
-
) -> Material:
|
|
38
|
-
if isinstance(configuration, NanoribbonConfiguration):
|
|
39
|
-
nanotape = configuration.nanotape
|
|
40
|
-
material = self._update_material_name_with_edge_type(
|
|
41
|
-
material, nanotape.lattice_lines.crystal.name, nanotape.lattice_lines.miller_indices_2d, "Nanoribbon"
|
|
42
|
-
)
|
|
43
|
-
return material
|
|
44
|
-
return super()._update_material_name(material, configuration)
|
|
45
|
-
|
|
46
|
-
def _update_material_name_with_edge_type(
|
|
47
|
-
self,
|
|
48
|
-
material: Union[Material, MaterialWithBuildMetadata],
|
|
49
|
-
crystal_name: str,
|
|
50
|
-
miller_indices_2d: tuple,
|
|
51
|
-
structure_type: str,
|
|
52
|
-
) -> Material:
|
|
53
|
-
edge_type = get_edge_type_from_miller_indices(miller_indices_2d)
|
|
54
|
-
miller_str = f"{miller_indices_2d[0]}{miller_indices_2d[1]}"
|
|
55
|
-
material.name = f"{crystal_name} - {edge_type} {structure_type} ({miller_str})"
|
|
56
|
-
return material
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
from typing import List, Union
|
|
2
|
-
|
|
3
|
-
from mat3ra.esse.models.core.reusable.axis_enum import AxisEnum
|
|
4
|
-
from mat3ra.esse.models.materials_category.pristine_structures.two_dimensional.nanoribbon import (
|
|
5
|
-
NanoribbonConfigurationSchema,
|
|
6
|
-
)
|
|
7
|
-
|
|
8
|
-
from ..nanotape.configuration import NanoTapeConfiguration
|
|
9
|
-
from .....build_components.entities.core.two_dimensional.vacuum.configuration import VacuumConfiguration
|
|
10
|
-
from .....build_components.operations.core.combinations.stack.configuration import StackConfiguration
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
class NanoribbonConfiguration(StackConfiguration, NanoribbonConfigurationSchema):
|
|
14
|
-
"""
|
|
15
|
-
Configuration for building a nanoribbon from a nanotape.
|
|
16
|
-
Nanoribbon = [NanoTape, vacuum] stacked in X or Y direction.
|
|
17
|
-
|
|
18
|
-
Args:
|
|
19
|
-
stack_components: List of configuration objects for nanoribbon components.
|
|
20
|
-
direction: Direction along which to stack components.
|
|
21
|
-
"""
|
|
22
|
-
|
|
23
|
-
type: str = "NanoribbonConfiguration"
|
|
24
|
-
stack_components: List[Union[NanoTapeConfiguration, VacuumConfiguration]]
|
|
25
|
-
direction: AxisEnum = AxisEnum.x
|
|
26
|
-
|
|
27
|
-
@property
|
|
28
|
-
def nanotape(self):
|
|
29
|
-
return self.stack_components[0]
|
|
30
|
-
|
|
31
|
-
@property
|
|
32
|
-
def vacuum_configuration(self) -> VacuumConfiguration:
|
|
33
|
-
return self.stack_components[1]
|