@mat3ra/made 2026.8.7-0 → 2026.8.18-0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/js/Material.d.ts +219 -0
- package/dist/js/Material.js +457 -0
- package/dist/js/basis/basis.d.ts +14 -9
- package/dist/js/basis/basis.js +15 -13
- package/dist/js/basis/constrained_basis.d.ts +9 -7
- package/dist/js/basis/constrained_basis.js +4 -4
- package/dist/js/generated/MaterialSchemaMixin.d.ts +5 -0
- package/dist/js/generated/MaterialSchemaMixin.js +69 -0
- package/dist/js/lattice/lattice.d.ts +4 -3
- package/dist/js/lattice/lattice.js +1 -2
- package/dist/js/made.d.ts +12 -12
- package/dist/js/made.js +38 -5
- package/dist/js/parsers/espresso.d.ts +2 -3
- package/dist/js/parsers/espresso.js +0 -1
- package/dist/js/parsers/native_format_parsers.d.ts +9 -8
- package/dist/js/parsers/native_format_parsers.js +6 -6
- package/dist/js/parsers/parsers.d.ts +6 -6
- package/dist/js/parsers/poscar.d.ts +5 -4
- package/dist/js/parsers/poscar.js +3 -2
- package/dist/js/parsers/xyz.d.ts +3 -5
- package/dist/js/parsers/xyz.js +3 -4
- package/dist/js/parsers/xyz_combinatorial_basis.js +3 -1
- package/dist/js/tools/basis.d.ts +1 -1
- package/dist/js/tools/index.d.ts +7 -7
- package/dist/js/tools/material.d.ts +1 -1
- package/dist/js/tools/material.js +8 -7
- package/dist/js/tools/supercell.d.ts +4 -5
- package/dist/js/tools/supercell.js +2 -4
- package/dist/js/tools/surface.d.ts +4 -4
- package/dist/js/tools/surface.js +2 -7
- package/package.json +12 -8
- package/.babelrc +0 -10
- package/.eslintrc.json +0 -11
- package/.gitattributes +0 -1
- package/.husky/post-checkout +0 -3
- package/.husky/post-commit +0 -3
- package/.husky/post-merge +0 -3
- package/.husky/pre-commit +0 -6
- package/.husky/pre-push +0 -3
- package/.mocharc.json +0 -5
- package/.pre-commit-config.yaml +0 -26
- package/.prettierignore +0 -2
- package/.prettierrc +0 -6
- package/AGENTS.md +0 -133
- package/MANIFEST.in +0 -1
- package/data/constants.json +0 -13
- package/data/reciprocal_paths.json +0 -111
- package/dist/js/material.d.ts +0 -169
- package/dist/js/material.js +0 -362
- package/images/made/tools/tools_diagram_general.png +0 -3
- package/images/made/tools/tools_diagram_interface.png +0 -3
- package/pyproject.toml +0 -123
- package/src/__init__.py +0 -0
- package/src/js/basis/basis.ts +0 -621
- package/src/js/basis/constrained_basis.ts +0 -114
- package/src/js/basis/coordinates.ts +0 -93
- package/src/js/basis/elements.ts +0 -24
- package/src/js/basis/helpers.ts +0 -20
- package/src/js/basis/labels.ts +0 -6
- package/src/js/cell/cell.ts +0 -150
- package/src/js/cell/conventional_cell.ts +0 -86
- package/src/js/cell/primitive_cell.ts +0 -166
- package/src/js/constants/molecule.ts +0 -18
- package/src/js/constants.ts +0 -4
- package/src/js/constraints/constraints.ts +0 -45
- package/src/js/lattice/lattice.ts +0 -306
- package/src/js/lattice/lattice_types.ts +0 -134
- package/src/js/lattice/reciprocal/lattice_reciprocal.ts +0 -193
- package/src/js/lattice/reciprocal/paths.ts +0 -39
- package/src/js/lattice/reciprocal/symmetry_points.ts +0 -886
- package/src/js/lattice/unit_cell.ts +0 -66
- package/src/js/made.ts +0 -62
- package/src/js/material.ts +0 -458
- package/src/js/parsers/cif.ts +0 -25
- package/src/js/parsers/errors.ts +0 -6
- package/src/js/parsers/espresso.ts +0 -30
- package/src/js/parsers/native_format_parsers.ts +0 -51
- package/src/js/parsers/parsers.ts +0 -13
- package/src/js/parsers/poscar.ts +0 -212
- package/src/js/parsers/xyz.ts +0 -187
- package/src/js/parsers/xyz_combinatorial_basis.ts +0 -265
- package/src/js/tools/basis.ts +0 -132
- package/src/js/tools/cell.ts +0 -41
- package/src/js/tools/index.ts +0 -11
- package/src/js/tools/material.ts +0 -62
- package/src/js/tools/supercell.ts +0 -88
- package/src/js/tools/surface.ts +0 -223
- package/src/py/__init__.py +0 -0
- package/src/py/mat3ra/__init__.py +0 -1
- package/src/py/mat3ra/made/__init__.py +0 -7
- package/src/py/mat3ra/made/basis/__init__.py +0 -255
- package/src/py/mat3ra/made/basis/coordinates.py +0 -43
- package/src/py/mat3ra/made/cell/__init__.py +0 -55
- package/src/py/mat3ra/made/cell/primitive_cell.py +0 -156
- package/src/py/mat3ra/made/data_helper.py +0 -5
- package/src/py/mat3ra/made/lattice.py +0 -195
- package/src/py/mat3ra/made/material.py +0 -134
- package/src/py/mat3ra/made/metadata.py +0 -45
- package/src/py/mat3ra/made/reciprocal/__init__.py +0 -5
- package/src/py/mat3ra/made/reciprocal/lattice_reciprocal.py +0 -147
- package/src/py/mat3ra/made/reciprocal/paths.py +0 -30
- package/src/py/mat3ra/made/reciprocal/symmetry_points.py +0 -385
- package/src/py/mat3ra/made/tools/README.md +0 -173
- package/src/py/mat3ra/made/tools/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/analyze/__init__.py +0 -31
- package/src/py/mat3ra/made/tools/analyze/basis/__init__.py +0 -3
- package/src/py/mat3ra/made/tools/analyze/basis/analyzer.py +0 -50
- package/src/py/mat3ra/made/tools/analyze/build_metadata_analyzer.py +0 -32
- package/src/py/mat3ra/made/tools/analyze/build_metadata_analyzer_factory.py +0 -31
- package/src/py/mat3ra/made/tools/analyze/coordination.py +0 -56
- package/src/py/mat3ra/made/tools/analyze/crystal_site/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/analyze/crystal_site/adatom_crystal_site_material_analyzer.py +0 -35
- package/src/py/mat3ra/made/tools/analyze/crystal_site/adatom_material_analyzer.py +0 -49
- package/src/py/mat3ra/made/tools/analyze/crystal_site/crystal_site_analyzer.py +0 -65
- package/src/py/mat3ra/made/tools/analyze/crystal_site/voronoi_crystal_site_analyzer.py +0 -47
- package/src/py/mat3ra/made/tools/analyze/enums.py +0 -33
- package/src/py/mat3ra/made/tools/analyze/fingerprint/__init__.py +0 -4
- package/src/py/mat3ra/made/tools/analyze/fingerprint/layers/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/analyze/fingerprint/layers/layered_fingerprint_along_axis.py +0 -83
- package/src/py/mat3ra/made/tools/analyze/fingerprint/layers/unique_element_string_per_layer.py +0 -9
- package/src/py/mat3ra/made/tools/analyze/interface/__init__.py +0 -20
- package/src/py/mat3ra/made/tools/analyze/interface/commensurate.py +0 -156
- package/src/py/mat3ra/made/tools/analyze/interface/enums.py +0 -60
- package/src/py/mat3ra/made/tools/analyze/interface/grain_boundary.py +0 -80
- package/src/py/mat3ra/made/tools/analyze/interface/simple.py +0 -251
- package/src/py/mat3ra/made/tools/analyze/interface/twisted_nanoribbons.py +0 -91
- package/src/py/mat3ra/made/tools/analyze/interface/utils/__init__.py +0 -77
- package/src/py/mat3ra/made/tools/analyze/interface/utils/holders.py +0 -14
- package/src/py/mat3ra/made/tools/analyze/interface/utils/vector.py +0 -56
- package/src/py/mat3ra/made/tools/analyze/interface/zsl.py +0 -259
- package/src/py/mat3ra/made/tools/analyze/interface_material.py +0 -45
- package/src/py/mat3ra/made/tools/analyze/lattice/__init__.py +0 -2
- package/src/py/mat3ra/made/tools/analyze/lattice/analyzer.py +0 -126
- package/src/py/mat3ra/made/tools/analyze/lattice/helpers.py +0 -31
- package/src/py/mat3ra/made/tools/analyze/lattice_lines.py +0 -30
- package/src/py/mat3ra/made/tools/analyze/lattice_planes.py +0 -192
- package/src/py/mat3ra/made/tools/analyze/lattice_swap_analyzer.py +0 -105
- package/src/py/mat3ra/made/tools/analyze/material.py +0 -276
- package/src/py/mat3ra/made/tools/analyze/other.py +0 -434
- package/src/py/mat3ra/made/tools/analyze/rdf.py +0 -74
- package/src/py/mat3ra/made/tools/analyze/slab.py +0 -76
- package/src/py/mat3ra/made/tools/analyze/solid_solution_analyzer.py +0 -171
- package/src/py/mat3ra/made/tools/analyze/terrace.py +0 -105
- package/src/py/mat3ra/made/tools/analyze/utils.py +0 -162
- package/src/py/mat3ra/made/tools/bond_directions/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/bond_directions/bond_directions.py +0 -150
- package/src/py/mat3ra/made/tools/bond_directions/bond_directions_for_element_list.py +0 -7
- package/src/py/mat3ra/made/tools/bond_directions/bond_directions_templates_enum.py +0 -8
- package/src/py/mat3ra/made/tools/bond_directions/bond_directions_templates_for_element.py +0 -16
- package/src/py/mat3ra/made/tools/build/__init__.py +0 -25
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/heterostructure/__init__.py +0 -7
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/heterostructure/helpers.py +0 -59
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/heterostructure/types.py +0 -26
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/heterostructure/utils.py +0 -139
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/__init__.py +0 -47
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/base/__init__.py +0 -11
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/base/build_parameters.py +0 -5
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/base/builder.py +0 -164
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/base/configuration.py +0 -48
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/base/helpers.py +0 -134
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/commensurate/__init__.py +0 -6
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/commensurate/helpers.py +0 -157
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/enums.py +0 -7
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/twisted/__init__.py +0 -7
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/twisted/configuration.py +0 -13
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/twisted/helpers.py +0 -70
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/utils.py +0 -87
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/zsl/__init__.py +0 -6
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/zsl/helpers.py +0 -129
- package/src/py/mat3ra/made/tools/build/defective_structures/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/defective_structures/one_dimensional/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/defective_structures/one_dimensional/grain_boundary_linear/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/defective_structures/one_dimensional/grain_boundary_linear/build_parameters.py +0 -12
- package/src/py/mat3ra/made/tools/build/defective_structures/one_dimensional/grain_boundary_linear/builder.py +0 -17
- package/src/py/mat3ra/made/tools/build/defective_structures/one_dimensional/grain_boundary_linear/configuration.py +0 -40
- package/src/py/mat3ra/made/tools/build/defective_structures/one_dimensional/grain_boundary_linear/helpers.py +0 -82
- package/src/py/mat3ra/made/tools/build/defective_structures/three_dimensional/__init__.py +0 -1
- package/src/py/mat3ra/made/tools/build/defective_structures/three_dimensional/solid_solution/__init__.py +0 -9
- package/src/py/mat3ra/made/tools/build/defective_structures/three_dimensional/solid_solution/builder.py +0 -37
- package/src/py/mat3ra/made/tools/build/defective_structures/three_dimensional/solid_solution/configuration.py +0 -30
- package/src/py/mat3ra/made/tools/build/defective_structures/three_dimensional/solid_solution/enums.py +0 -8
- package/src/py/mat3ra/made/tools/build/defective_structures/three_dimensional/solid_solution/helpers.py +0 -76
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/adatom/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/adatom/builder.py +0 -11
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/adatom/configuration.py +0 -18
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/adatom/helpers.py +0 -137
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/adatom/types.py +0 -22
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/grain_boundary_planar/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/grain_boundary_planar/builder.py +0 -28
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/grain_boundary_planar/configuration.py +0 -55
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/grain_boundary_planar/helpers.py +0 -75
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/island/builder.py +0 -15
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/island/configuration.py +0 -16
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/island/helpers.py +0 -116
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/terrace/build_parameters.py +0 -10
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/terrace/builder.py +0 -30
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/terrace/configuration.py +0 -11
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/terrace/helpers.py +0 -78
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/pair_defect/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/pair_defect/builder.py +0 -31
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/pair_defect/configuration.py +0 -45
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/pair_defect/helpers.py +0 -80
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/__init__.py +0 -40
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/atom_placement_method_enum.py +0 -14
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/base/__init__.py +0 -7
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/base/builder.py +0 -42
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/base/configuration.py +0 -27
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/complex_defect_type_enum.py +0 -5
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/factories.py +0 -69
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/helpers.py +0 -92
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/interstitial/__init__.py +0 -7
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/interstitial/builder.py +0 -8
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/interstitial/configuration.py +0 -29
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/interstitial/helpers.py +0 -48
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/interstitial/interstitial_placement_method_enum.py +0 -8
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/point_defect_type_enum.py +0 -8
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/substitutional/__init__.py +0 -7
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/substitutional/builder.py +0 -6
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/substitutional/configuration.py +0 -41
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/substitutional/helpers.py +0 -43
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/substitutional/substitution_placement_method_enum.py +0 -7
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/types.py +0 -24
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/vacancy/__init__.py +0 -7
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/vacancy/builder.py +0 -19
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/vacancy/configuration.py +0 -27
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/vacancy/helpers.py +0 -42
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/vacancy/vacancy_placement_method_enum.py +0 -7
- package/src/py/mat3ra/made/tools/build/pristine_structures/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/pristine_structures/three_dimensional/ideal_crystal/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/pristine_structures/three_dimensional/ideal_crystal/builder.py +0 -80
- package/src/py/mat3ra/made/tools/build/pristine_structures/three_dimensional/ideal_crystal/configurations.py +0 -22
- package/src/py/mat3ra/made/tools/build/pristine_structures/three_dimensional/ideal_crystal/helpers.py +0 -40
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanoribbon/__init__.py +0 -29
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanoribbon/build_parameters.py +0 -5
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanoribbon/builders.py +0 -56
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanoribbon/configuration.py +0 -33
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanoribbon/helpers.py +0 -76
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanotape/__init__.py +0 -11
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanotape/build_parameters.py +0 -9
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanotape/builders.py +0 -83
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanotape/configuration.py +0 -35
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanotape/helpers.py +0 -62
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab/__init__.py +0 -9
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab/build_parameters.py +0 -8
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab/builder.py +0 -42
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab/configuration.py +0 -99
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab/helpers.py +0 -95
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab/termination_utils.py +0 -14
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab/utils.py +0 -61
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab_strained_supercell/builder.py +0 -22
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab_strained_supercell/configuration.py +0 -17
- package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/__init__.py +0 -19
- package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/analyzer.py +0 -86
- package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/ase_based/__init__.py +0 -7
- package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/ase_based/builder.py +0 -54
- package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/ase_based/configuration.py +0 -19
- package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/enums.py +0 -42
- package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/helpers.py +0 -127
- package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/merge_based/__init__.py +0 -7
- package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/merge_based/builder.py +0 -33
- package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/merge_based/configuration.py +0 -16
- package/src/py/mat3ra/made/tools/build/processed_structures/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/analyzers/__init__.py +0 -9
- package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/analyzers/coordination_based_passivation_material_analyzer.py +0 -112
- package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/analyzers/passivation_material_analyzer.py +0 -16
- package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/analyzers/surface_passivation_material_analyzer.py +0 -32
- package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/builder.py +0 -23
- package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/configuration.py +0 -31
- package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/enums.py +0 -7
- package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/helpers.py +0 -151
- package/src/py/mat3ra/made/tools/build_components/__init__.py +0 -10
- package/src/py/mat3ra/made/tools/build_components/entities/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/one_dimensional/miller_indices_2d.py +0 -0
- package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/two_dimensional/miller_indices.py +0 -18
- package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/two_dimensional/termination.py +0 -33
- package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/crystal_site/__init__.py +0 -2
- package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/crystal_site/crystal_site.py +0 -24
- package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/crystal_site/crystal_site_list.py +0 -9
- package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/point_defect_site/builder.py +0 -32
- package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/point_defect_site/configuration.py +0 -14
- package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/void_region/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/void_region/builder.py +0 -29
- package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/void_region/configuration.py +0 -19
- package/src/py/mat3ra/made/tools/build_components/entities/core/two_dimensional/vacuum/builder.py +0 -48
- package/src/py/mat3ra/made/tools/build_components/entities/core/two_dimensional/vacuum/configuration.py +0 -17
- package/src/py/mat3ra/made/tools/build_components/entities/core/zero_dimensional/atom/builder.py +0 -25
- package/src/py/mat3ra/made/tools/build_components/entities/core/zero_dimensional/atom/configuration.py +0 -8
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/base_builder/__init__.py +0 -16
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/base_builder/base_configuration_pydantic.py +0 -5
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/base_builder/base_single_builder.py +0 -87
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/base_builder/build_parameters.py +0 -5
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/crystal_lattice_lines/__init__.py +0 -4
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/crystal_lattice_lines/builder.py +0 -46
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/crystal_lattice_lines/configuration.py +0 -19
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/crystal_lattice_lines/edge_types.py +0 -51
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/crystal_lattice_lines/helpers.py +0 -58
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/crystal_lattice_lines_unique_repeated/__init__.py +0 -4
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/crystal_lattice_lines_unique_repeated/builder.py +0 -42
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/crystal_lattice_lines_unique_repeated/configuration.py +0 -21
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/three_dimensional/supercell/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/three_dimensional/supercell/configuration.py +0 -11
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/three_dimensional/supercell/helpers.py +0 -38
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/__init__.py +0 -24
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/atomic_layers_unique_repeated/__init__.py +0 -7
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/atomic_layers_unique_repeated/builder.py +0 -62
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/atomic_layers_unique_repeated/configuration.py +0 -14
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/atomic_layers_unique_repeated/helpers.py +0 -42
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/crystal_lattice_planes/__init__.py +0 -7
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/crystal_lattice_planes/builder.py +0 -39
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/crystal_lattice_planes/configuration.py +0 -24
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/slab_stack/__init__.py +0 -10
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/slab_stack/builder.py +0 -36
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/slab_stack/configuration.py +0 -31
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/slab_stack/helpers.py +0 -80
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/zero_dimensional/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/zero_dimensional/coordinates_shape_enum.py +0 -8
- package/src/py/mat3ra/made/tools/build_components/metadata/__init__.py +0 -2
- package/src/py/mat3ra/made/tools/build_components/metadata/build_metadata.py +0 -7
- package/src/py/mat3ra/made/tools/build_components/metadata/material_build_metadata.py +0 -35
- package/src/py/mat3ra/made/tools/build_components/metadata/material_with_build_metadata.py +0 -8
- package/src/py/mat3ra/made/tools/build_components/mixins/__init__.py +0 -2
- package/src/py/mat3ra/made/tools/build_components/mixins/convert_generated_items_ase_atoms_mixin.py +0 -8
- package/src/py/mat3ra/made/tools/build_components/mixins/convert_generated_items_pymatgen_structure_mixin.py +0 -8
- package/src/py/mat3ra/made/tools/build_components/operations/core/combinations/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build_components/operations/core/combinations/enums.py +0 -11
- package/src/py/mat3ra/made/tools/build_components/operations/core/combinations/merge/__init__.py +0 -6
- package/src/py/mat3ra/made/tools/build_components/operations/core/combinations/merge/build_parameters.py +0 -18
- package/src/py/mat3ra/made/tools/build_components/operations/core/combinations/merge/builder.py +0 -93
- package/src/py/mat3ra/made/tools/build_components/operations/core/combinations/merge/configuration.py +0 -20
- package/src/py/mat3ra/made/tools/build_components/operations/core/combinations/stack/builder.py +0 -83
- package/src/py/mat3ra/made/tools/build_components/operations/core/combinations/stack/configuration.py +0 -24
- package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/__init__.py +0 -15
- package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/build_parameters.py +0 -5
- package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/builders/base.py +0 -33
- package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/builders/isometric.py +0 -25
- package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/configuration.py +0 -24
- package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/functions/__init__.py +0 -13
- package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/functions/atomic_mass_dependent_function_holder.py +0 -32
- package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/functions/function_holder.py +0 -80
- package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/functions/maxwell_boltzmann.py +0 -39
- package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/functions/perturbation_function_holder.py +0 -45
- package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/functions/sine_wave_perturbation_function_holder.py +0 -29
- package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/helpers.py +0 -83
- package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/strain/__init__.py +0 -5
- package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/strain/builder.py +0 -25
- package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/strain/configuration.py +0 -23
- package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/strain/helpers.py +0 -49
- package/src/py/mat3ra/made/tools/build_components/utils.py +0 -44
- package/src/py/mat3ra/made/tools/calculate/__init__.py +0 -149
- package/src/py/mat3ra/made/tools/calculate/ase/__init__.py +0 -133
- package/src/py/mat3ra/made/tools/calculate/ase/constraints.py +0 -91
- package/src/py/mat3ra/made/tools/calculate/calculators/__init__.py +0 -4
- package/src/py/mat3ra/made/tools/calculate/calculators/interface_material_calculator.py +0 -70
- package/src/py/mat3ra/made/tools/calculate/calculators/interface_material_calculator_parameters.py +0 -14
- package/src/py/mat3ra/made/tools/calculate/calculators/material_calculator.py +0 -32
- package/src/py/mat3ra/made/tools/calculate/calculators/material_calculator_parameters.py +0 -17
- package/src/py/mat3ra/made/tools/calculate/interaction_functions.py +0 -23
- package/src/py/mat3ra/made/tools/convert/__init__.py +0 -286
- package/src/py/mat3ra/made/tools/convert/interface_parts_enum.py +0 -9
- package/src/py/mat3ra/made/tools/convert/utils.py +0 -96
- package/src/py/mat3ra/made/tools/entities/__init__.py +0 -5
- package/src/py/mat3ra/made/tools/entities/coordinate/__init__.py +0 -14
- package/src/py/mat3ra/made/tools/entities/coordinate/box_coordinate_condition.py +0 -15
- package/src/py/mat3ra/made/tools/entities/coordinate/coordinate_condition.py +0 -16
- package/src/py/mat3ra/made/tools/entities/coordinate/coordinate_functions.py +0 -158
- package/src/py/mat3ra/made/tools/entities/coordinate/cylinder_coordinate_condition.py +0 -17
- package/src/py/mat3ra/made/tools/entities/coordinate/plane_coordinate_condition.py +0 -14
- package/src/py/mat3ra/made/tools/entities/coordinate/sphere_coordinate_condition.py +0 -15
- package/src/py/mat3ra/made/tools/entities/coordinate/triangular_prism_coordinate_condition.py +0 -26
- package/src/py/mat3ra/made/tools/entities/termination_holder.py +0 -12
- package/src/py/mat3ra/made/tools/helpers.py +0 -168
- package/src/py/mat3ra/made/tools/modify.py +0 -627
- package/src/py/mat3ra/made/tools/operations/core/binary.py +0 -106
- package/src/py/mat3ra/made/tools/operations/core/unary.py +0 -170
- package/src/py/mat3ra/made/tools/operations/core/utils.py +0 -138
- package/src/py/mat3ra/made/tools/operations/reusable/unary.py +0 -53
- package/src/py/mat3ra/made/tools/optimize.py +0 -55
- package/src/py/mat3ra/made/tools/third_party.py +0 -69
- package/src/py/mat3ra/made/tools/utils.py +0 -182
- package/src/py/mat3ra/made/utils.py +0 -144
- package/tests/.gitattributes +0 -1
- package/tests/fixtures/AsGe-basis.json +0 -3
- package/tests/fixtures/C2H4-translated.json +0 -3
- package/tests/fixtures/C2H4.json +0 -3
- package/tests/fixtures/FeLiSi-basis.json +0 -3
- package/tests/fixtures/FeO.json +0 -3
- package/tests/fixtures/Ge2-basis.json +0 -3
- package/tests/fixtures/Graphene.json +0 -3
- package/tests/fixtures/Graphene.poscar +0 -3
- package/tests/fixtures/H2+H-final.json +0 -3
- package/tests/fixtures/H2+H-image.json +0 -3
- package/tests/fixtures/H2+H-initial.json +0 -3
- package/tests/fixtures/H2O.poscar +0 -3
- package/tests/fixtures/LiFeSi-basis-labels.json +0 -3
- package/tests/fixtures/LiFeSi-basis.json +0 -3
- package/tests/fixtures/Na.json +0 -3
- package/tests/fixtures/Na4Cl4-cartesian.json +0 -3
- package/tests/fixtures/Na4Cl4.json +0 -3
- package/tests/fixtures/Na4Cl4.poscar +0 -3
- package/tests/fixtures/Ni-hex.json +0 -3
- package/tests/fixtures/Ni-hex.poscar +0 -3
- package/tests/fixtures/OSi-basis.json +0 -3
- package/tests/fixtures/Si-hex.poscar +0 -3
- package/tests/fixtures/Si-pwscf.in +0 -3
- package/tests/fixtures/Si-slab.json +0 -3
- package/tests/fixtures/Si-supercell.json +0 -3
- package/tests/fixtures/Si2-basis-repeated.json +0 -3
- package/tests/fixtures/Si2-basis.json +0 -3
- package/tests/fixtures/Zr1H23Zr1H1.json +0 -3
- package/tests/fixtures/Zr1H23Zr1H1.poscar +0 -3
- package/tests/fixtures/atomic-constraints.json +0 -3
- package/tests/fixtures/hashes.json +0 -3
- package/tests/fixtures/si-slab-100.json +0 -3
- package/tests/fixtures/si-slab-111-0-vacuum.json +0 -3
- package/tests/fixtures/si-slab-111-0.5-vacuum-gamma-120.json +0 -3
- package/tests/fixtures/si-slab-111-0.5-vacuum-ratio.json +0 -3
- package/tests/fixtures/si-standata.json +0 -3
- package/tests/js/basis/basis.ts +0 -247
- package/tests/js/cell/cell.ts +0 -182
- package/tests/js/cell/primitive_cell.ts +0 -21
- package/tests/js/constraints/constraints.ts +0 -11
- package/tests/js/fixtures.ts +0 -120
- package/tests/js/lattice/lattice.ts +0 -43
- package/tests/js/lattice/lattice_reciprocal.ts +0 -104
- package/tests/js/material.test.ts +0 -42
- package/tests/js/parsers/espresso.ts +0 -15
- package/tests/js/parsers/native_formats.ts +0 -35
- package/tests/js/parsers/poscar.ts +0 -89
- package/tests/js/parsers/xyz.ts +0 -33
- package/tests/js/parsers/xyz_combinatorial_basis.ts +0 -156
- package/tests/js/setup.ts +0 -6
- package/tests/js/tools/basis.ts +0 -22
- package/tests/js/tools/supercell.ts +0 -58
- package/tests/js/tools/surface.ts +0 -115
- package/tests/py/conftest.py +0 -34
- package/tests/py/mat3ra/debug_utils.py +0 -75
- package/tests/py/unit/__init__.py +0 -0
- package/tests/py/unit/fixtures/__init__.py +0 -0
- package/tests/py/unit/fixtures/adatom.py +0 -60
- package/tests/py/unit/fixtures/bulk.py +0 -162
- package/tests/py/unit/fixtures/cuts.py +0 -118
- package/tests/py/unit/fixtures/grain_boundary.py +0 -875
- package/tests/py/unit/fixtures/interface/commensurate.py +0 -498
- package/tests/py/unit/fixtures/interface/gaas_dia.py +0 -837
- package/tests/py/unit/fixtures/interface/gr_ni_111_top_hcp.py +0 -123
- package/tests/py/unit/fixtures/interface/simple.py +0 -84
- package/tests/py/unit/fixtures/interface/twisted_nanoribbons.py +0 -131
- package/tests/py/unit/fixtures/interface/zsl.py +0 -756
- package/tests/py/unit/fixtures/island.py +0 -336
- package/tests/py/unit/fixtures/merge.py +0 -147
- package/tests/py/unit/fixtures/monolayer.py +0 -46
- package/tests/py/unit/fixtures/nanoparticle.py +0 -116
- package/tests/py/unit/fixtures/nanoribbon/__init__.py +0 -0
- package/tests/py/unit/fixtures/nanoribbon/armchair.py +0 -102
- package/tests/py/unit/fixtures/nanoribbon/nanoribbon.py +0 -145
- package/tests/py/unit/fixtures/nanoribbon/zigzag.py +0 -54
- package/tests/py/unit/fixtures/pair_defects.py +0 -41
- package/tests/py/unit/fixtures/passivated/nanoribbon.py +0 -69
- package/tests/py/unit/fixtures/passivated/slab.py +0 -58
- package/tests/py/unit/fixtures/point_defects.py +0 -158
- package/tests/py/unit/fixtures/slab.py +0 -606
- package/tests/py/unit/fixtures/strain.py +0 -42
- package/tests/py/unit/fixtures/supercell.py +0 -64
- package/tests/py/unit/fixtures/terrace.py +0 -70
- package/tests/py/unit/fixtures/thrid_party/ase_atoms.py +0 -13
- package/tests/py/unit/test_analyze_lattice_planes.py +0 -131
- package/tests/py/unit/test_cell.py +0 -104
- package/tests/py/unit/test_data_files.py +0 -68
- package/tests/py/unit/test_lattice.py +0 -103
- package/tests/py/unit/test_lattice_type_extended.py +0 -53
- package/tests/py/unit/test_material.py +0 -158
- package/tests/py/unit/test_operations.py +0 -126
- package/tests/py/unit/test_primitive_cell.py +0 -118
- package/tests/py/unit/test_reciprocal_lattice.py +0 -86
- package/tests/py/unit/test_reciprocal_paths.py +0 -64
- package/tests/py/unit/test_symmetry_points.py +0 -151
- package/tests/py/unit/test_tools_analyze.py +0 -219
- package/tests/py/unit/test_tools_analyze_basis.py +0 -105
- package/tests/py/unit/test_tools_analyze_interface.py +0 -223
- package/tests/py/unit/test_tools_analyze_interface_material.py +0 -63
- package/tests/py/unit/test_tools_analyze_interface_zsl.py +0 -187
- package/tests/py/unit/test_tools_analyze_lattice.py +0 -74
- package/tests/py/unit/test_tools_analyze_swap.py +0 -80
- package/tests/py/unit/test_tools_build.py +0 -158
- package/tests/py/unit/test_tools_build_defect/__init__.py +0 -0
- package/tests/py/unit/test_tools_build_defect/test_adatom.py +0 -84
- package/tests/py/unit/test_tools_build_defect/test_island.py +0 -45
- package/tests/py/unit/test_tools_build_defect/test_pair_defect.py +0 -84
- package/tests/py/unit/test_tools_build_defect/test_point_defect.py +0 -196
- package/tests/py/unit/test_tools_build_defect/test_slab_stack.py +0 -30
- package/tests/py/unit/test_tools_build_defect/test_solid_solution.py +0 -90
- package/tests/py/unit/test_tools_build_defect/test_terrace.py +0 -44
- package/tests/py/unit/test_tools_build_grain_boundary.py +0 -133
- package/tests/py/unit/test_tools_build_heterostructure.py +0 -46
- package/tests/py/unit/test_tools_build_interface.py +0 -292
- package/tests/py/unit/test_tools_build_interface_zsl.py +0 -263
- package/tests/py/unit/test_tools_build_maxwell_disorder.py +0 -123
- package/tests/py/unit/test_tools_build_metadata.py +0 -79
- package/tests/py/unit/test_tools_build_monolayer.py +0 -33
- package/tests/py/unit/test_tools_build_nanoparticle.py +0 -42
- package/tests/py/unit/test_tools_build_nanoribbon.py +0 -45
- package/tests/py/unit/test_tools_build_passivation.py +0 -85
- package/tests/py/unit/test_tools_build_perturbation.py +0 -103
- package/tests/py/unit/test_tools_build_slab.py +0 -382
- package/tests/py/unit/test_tools_build_strain.py +0 -36
- package/tests/py/unit/test_tools_build_supercell.py +0 -47
- package/tests/py/unit/test_tools_calculate.py +0 -67
- package/tests/py/unit/test_tools_convert.py +0 -174
- package/tests/py/unit/test_tools_modify.py +0 -248
- package/tests/py/unit/utils.py +0 -142
- package/tsconfig-transpile.json +0 -3
- package/tsconfig.json +0 -3
package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/helpers.py
DELETED
|
@@ -1,151 +0,0 @@
|
|
|
1
|
-
from collections import Counter
|
|
2
|
-
from typing import List, Dict
|
|
3
|
-
|
|
4
|
-
from mat3ra.esse.models.materials_category_components.entities.core.zero_dimensional.atom import AtomSchema
|
|
5
|
-
|
|
6
|
-
from .analyzers import (
|
|
7
|
-
SurfacePassivationMaterialAnalyzer,
|
|
8
|
-
CoordinationBasedPassivationMaterialAnalyzer,
|
|
9
|
-
)
|
|
10
|
-
from .builder import PassivationBuilder
|
|
11
|
-
from .configuration import PassivationConfiguration
|
|
12
|
-
from .... import MaterialWithBuildMetadata
|
|
13
|
-
from .....analyze.material import MaterialWithCrystalSites
|
|
14
|
-
from .....build_components.entities.core.zero_dimensional.atom.configuration import AtomAtCoordinateConfiguration
|
|
15
|
-
from mat3ra.made.tools.build.processed_structures.two_dimensional.passivation.enums import SurfaceTypesEnum
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
def passivate_surface(
|
|
19
|
-
material: MaterialWithBuildMetadata,
|
|
20
|
-
passivant: str = "H",
|
|
21
|
-
bond_length: float = 1.0,
|
|
22
|
-
shadowing_radius: float = 2.5,
|
|
23
|
-
depth: float = 5.0,
|
|
24
|
-
surface: SurfaceTypesEnum = SurfaceTypesEnum.TOP,
|
|
25
|
-
) -> MaterialWithBuildMetadata:
|
|
26
|
-
"""
|
|
27
|
-
Create a passivated material by adding passivant atoms to the surface of the provided material.
|
|
28
|
-
|
|
29
|
-
Args:
|
|
30
|
-
material (Material): The material to be passivated. Should have vacuum space above or below the surface.
|
|
31
|
-
passivant (str): The chemical symbol of the passivating atom (default is 'H').
|
|
32
|
-
bond_length (float): The bond length for the passivation (default is 1.0). Å
|
|
33
|
-
shadowing_radius (float): The radius with which an atom shadows/covers underlying atom from being exposed. Å
|
|
34
|
-
depth (float): The depth from the most top (or bottom) atom into the slab to search for exposed atoms. Å
|
|
35
|
-
surface (SurfaceTypesEnum): The surface to passivate (TOP, BOTTOM, or BOTH).
|
|
36
|
-
Returns:
|
|
37
|
-
Material: The passivated material.
|
|
38
|
-
"""
|
|
39
|
-
analyzer = SurfacePassivationMaterialAnalyzer(
|
|
40
|
-
material=material,
|
|
41
|
-
passivant=passivant,
|
|
42
|
-
bond_length=bond_length,
|
|
43
|
-
shadowing_radius=shadowing_radius,
|
|
44
|
-
depth=depth,
|
|
45
|
-
surface=surface,
|
|
46
|
-
)
|
|
47
|
-
|
|
48
|
-
passivant_coordinates = analyzer.passivant_coordinates
|
|
49
|
-
passivant_configs = [
|
|
50
|
-
AtomAtCoordinateConfiguration(
|
|
51
|
-
crystal=material, element=AtomSchema(chemical_element=passivant), coordinate=coord
|
|
52
|
-
)
|
|
53
|
-
for coord in passivant_coordinates
|
|
54
|
-
]
|
|
55
|
-
config = PassivationConfiguration(
|
|
56
|
-
merge_components=[material, *passivant_configs], passivant=passivant, bond_length=bond_length
|
|
57
|
-
)
|
|
58
|
-
|
|
59
|
-
builder = PassivationBuilder()
|
|
60
|
-
return builder.get_material(config)
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
def passivate_dangling_bonds(
|
|
64
|
-
material: MaterialWithBuildMetadata,
|
|
65
|
-
passivant: str = "H",
|
|
66
|
-
bond_length: float = 1.0,
|
|
67
|
-
coordination_threshold: int = 3,
|
|
68
|
-
number_of_bonds_to_passivate: int = 1,
|
|
69
|
-
symmetry_tolerance: float = 0.1,
|
|
70
|
-
shadowing_radius: float = 2.5,
|
|
71
|
-
depth: float = 5.0,
|
|
72
|
-
) -> MaterialWithBuildMetadata:
|
|
73
|
-
"""
|
|
74
|
-
Create a passivated material by adding passivant atoms to the undercoordinated atoms of the provided material.
|
|
75
|
-
|
|
76
|
-
Args:
|
|
77
|
-
material (MaterialWithBuildMetadata): The material to be passivated.
|
|
78
|
-
passivant (str): The chemical symbol of the passivating atom (default is 'H').
|
|
79
|
-
bond_length (float): The bond length for the passivation (default is 1.0). Å
|
|
80
|
-
coordination_threshold (int): The coordination number threshold for an atom to be considered undercoordinated.
|
|
81
|
-
number_of_bonds_to_passivate (int): The maximum number of bonds to passivate for each undercoordinated atom.
|
|
82
|
-
symmetry_tolerance (float): The tolerance for symmetry comparison of vectors for bonds.
|
|
83
|
-
shadowing_radius (float): The radius with which an atom shadows/covers underlying atom from being exposed. Å
|
|
84
|
-
depth (float): The depth from the most top (or bottom) atom into the slab to search for exposed atoms. Å
|
|
85
|
-
|
|
86
|
-
Returns:
|
|
87
|
-
MaterialWithBuildMetadata: The passivated material with dangling bonds filled.
|
|
88
|
-
"""
|
|
89
|
-
analyzer = CoordinationBasedPassivationMaterialAnalyzer(
|
|
90
|
-
material=material,
|
|
91
|
-
passivant=passivant,
|
|
92
|
-
bond_length=bond_length,
|
|
93
|
-
coordination_threshold=coordination_threshold,
|
|
94
|
-
number_of_bonds_to_passivate=number_of_bonds_to_passivate,
|
|
95
|
-
symmetry_tolerance=symmetry_tolerance,
|
|
96
|
-
shadowing_radius=shadowing_radius,
|
|
97
|
-
depth=depth,
|
|
98
|
-
)
|
|
99
|
-
|
|
100
|
-
passivant_coordinates = analyzer.passivant_coordinates
|
|
101
|
-
passivant_configs = [
|
|
102
|
-
AtomAtCoordinateConfiguration(
|
|
103
|
-
crystal=material, element=AtomSchema(chemical_element=passivant), coordinate=coord
|
|
104
|
-
)
|
|
105
|
-
for coord in passivant_coordinates
|
|
106
|
-
]
|
|
107
|
-
config = PassivationConfiguration(
|
|
108
|
-
merge_components=[material, *passivant_configs], passivant=passivant, bond_length=bond_length
|
|
109
|
-
)
|
|
110
|
-
|
|
111
|
-
builder = PassivationBuilder()
|
|
112
|
-
return builder.get_material(config)
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
def get_unique_coordination_numbers(
|
|
116
|
-
material: MaterialWithBuildMetadata,
|
|
117
|
-
cutoff: float = 3.0,
|
|
118
|
-
) -> List[int]:
|
|
119
|
-
"""
|
|
120
|
-
Get the unique coordination numbers for the provided passivation configuration and cutoff radius.
|
|
121
|
-
|
|
122
|
-
Args:
|
|
123
|
-
material (MaterialWithBuildMetadata): The material object.
|
|
124
|
-
cutoff (float): The cutoff radius for defining neighbors.
|
|
125
|
-
Returns:
|
|
126
|
-
set: The unique coordination numbers.
|
|
127
|
-
"""
|
|
128
|
-
material_with_crystal_sites = MaterialWithCrystalSites.from_material(material)
|
|
129
|
-
material_with_crystal_sites.analyze()
|
|
130
|
-
return material_with_crystal_sites.get_unique_coordination_numbers(cutoff=cutoff)
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
def get_coordination_numbers_distribution(
|
|
134
|
-
material: MaterialWithBuildMetadata,
|
|
135
|
-
cutoff: float = 3.0,
|
|
136
|
-
) -> Dict[int, int]:
|
|
137
|
-
"""
|
|
138
|
-
Get the unique coordination numbers for the provided passivation configuration and cutoff radius.
|
|
139
|
-
|
|
140
|
-
Args:
|
|
141
|
-
material (MaterialWithBuildMetadata): The material object.
|
|
142
|
-
cutoff (float): The cutoff radius for defining neighbors.
|
|
143
|
-
Returns:
|
|
144
|
-
set: The unique coordination numbers.
|
|
145
|
-
"""
|
|
146
|
-
material_with_crystal_sites = MaterialWithCrystalSites.from_material(material)
|
|
147
|
-
material_with_crystal_sites.analyze()
|
|
148
|
-
coordinatation_numbers = material_with_crystal_sites.get_coordination_numbers(cutoff=cutoff)
|
|
149
|
-
sorted_coordinatation_numbers = sorted(coordinatation_numbers.values)
|
|
150
|
-
distribution = dict(Counter(sorted_coordinatation_numbers))
|
|
151
|
-
return distribution
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
from mat3ra.made.tools.build_components.entities.reusable.base_builder import (
|
|
2
|
-
BaseBuilderParameters,
|
|
3
|
-
BaseConfigurationPydantic,
|
|
4
|
-
BaseConfigurationPydanticChild,
|
|
5
|
-
BaseSingleBuilder,
|
|
6
|
-
TypeBuildParameters,
|
|
7
|
-
TypeConfiguration,
|
|
8
|
-
)
|
|
9
|
-
|
|
10
|
-
from .metadata import BuildMetadata, MaterialBuildMetadata, MaterialWithBuildMetadata
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
from typing import Tuple
|
|
2
|
-
|
|
3
|
-
from mat3ra.code.entity import InMemoryEntityPydantic
|
|
4
|
-
from mat3ra.esse.models.materials_category_components.entities.auxiliary.two_dimensional.miller_indices import (
|
|
5
|
-
MillerIndicesSchema,
|
|
6
|
-
)
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
class MillerIndices(MillerIndicesSchema, InMemoryEntityPydantic):
|
|
10
|
-
def to_tuple(self) -> Tuple[int, int, int]:
|
|
11
|
-
return (self.root[0], self.root[1], self.root[2])
|
|
12
|
-
|
|
13
|
-
@staticmethod
|
|
14
|
-
def format_index(index: int) -> str:
|
|
15
|
-
return f"{index}" + chr(0x0302) if index < 0 else f"{index}"
|
|
16
|
-
|
|
17
|
-
def __str__(self) -> str:
|
|
18
|
-
return f"({''.join([self.format_index(i) for i in self.root])})"
|
package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/two_dimensional/termination.py
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
from mat3ra.code.entity import InMemoryEntityPydantic
|
|
2
|
-
from mat3ra.esse.models.materials_category_components.entities.auxiliary.two_dimensional.termination import (
|
|
3
|
-
TerminationSchema,
|
|
4
|
-
)
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
class Termination(TerminationSchema, InMemoryEntityPydantic):
|
|
8
|
-
def __str__(self):
|
|
9
|
-
return f"{self.chemical_elements}_{self.space_group_symmetry_label}"
|
|
10
|
-
|
|
11
|
-
def __repr__(self):
|
|
12
|
-
return self.__str__()
|
|
13
|
-
|
|
14
|
-
def __init__(self, chemical_elements: str, space_group_symmetry_label: str):
|
|
15
|
-
super().__init__(chemical_elements=chemical_elements, space_group_symmetry_label=space_group_symmetry_label)
|
|
16
|
-
|
|
17
|
-
def __eq__(self, other):
|
|
18
|
-
if not isinstance(other, Termination):
|
|
19
|
-
return NotImplemented
|
|
20
|
-
return (
|
|
21
|
-
self.chemical_elements == other.chemical_elements
|
|
22
|
-
and self.space_group_symmetry_label == other.space_group_symmetry_label
|
|
23
|
-
)
|
|
24
|
-
|
|
25
|
-
@property
|
|
26
|
-
def formula(self):
|
|
27
|
-
return self.chemical_elements
|
|
28
|
-
|
|
29
|
-
@classmethod
|
|
30
|
-
def from_string(cls, termination: str):
|
|
31
|
-
chemical_elements = termination.split("_")[0]
|
|
32
|
-
space_group_symmetry_label = "_".join(termination.split("_")[1:])
|
|
33
|
-
return cls(chemical_elements=chemical_elements, space_group_symmetry_label=space_group_symmetry_label)
|
package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/__init__.py
DELETED
|
File without changes
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
from typing import List, Optional
|
|
2
|
-
|
|
3
|
-
import numpy as np
|
|
4
|
-
from mat3ra.code.entity import InMemoryEntityPydantic
|
|
5
|
-
from mat3ra.esse.models.materials_category_components.entities.auxiliary.zero_dimensional.crystal_site import (
|
|
6
|
-
CrystalSiteSchema,
|
|
7
|
-
)
|
|
8
|
-
from mat3ra.made.material import Material
|
|
9
|
-
from pydantic import Field
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
class CrystalSite(CrystalSiteSchema, InMemoryEntityPydantic):
|
|
13
|
-
crystal: Optional[Material] = Field(None, exclude=True)
|
|
14
|
-
# element: str
|
|
15
|
-
coordinate: Optional[List[float]] = None
|
|
16
|
-
nearest_neighbor_vectors: List[np.ndarray] = Field([], exclude=True)
|
|
17
|
-
# coordination_number: int = 0
|
|
18
|
-
# see https://www.cryst.ehu.es/cgi-bin/cryst/programs/nph-wp-list for an example
|
|
19
|
-
|
|
20
|
-
wyckoff_letter: Optional[str] = None
|
|
21
|
-
|
|
22
|
-
@property
|
|
23
|
-
def coordination_number(self):
|
|
24
|
-
return len(self.nearest_neighbor_vectors)
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
from mat3ra.code.array_with_ids import ArrayWithIds
|
|
2
|
-
from mat3ra.made.basis import Basis, Coordinates
|
|
3
|
-
|
|
4
|
-
from ......build_components import MaterialWithBuildMetadata
|
|
5
|
-
from ..... import BaseSingleBuilder
|
|
6
|
-
from .configuration import PointDefectSiteConfiguration
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
class PointDefectSiteBuilder(BaseSingleBuilder):
|
|
10
|
-
"""
|
|
11
|
-
Builder class for creating a material from a PointDefectSite configuration.
|
|
12
|
-
"""
|
|
13
|
-
|
|
14
|
-
_ConfigurationType = PointDefectSiteConfiguration
|
|
15
|
-
|
|
16
|
-
def _generate(self, configuration: PointDefectSiteConfiguration) -> MaterialWithBuildMetadata:
|
|
17
|
-
if configuration.crystal is None:
|
|
18
|
-
raise ValueError("Crystal configuration is required for PointDefectSiteBuilder")
|
|
19
|
-
|
|
20
|
-
crystal = configuration.crystal
|
|
21
|
-
basis = Basis(
|
|
22
|
-
elements=ArrayWithIds(values=[], ids=[]),
|
|
23
|
-
coordinates=Coordinates(values=[], ids=[]),
|
|
24
|
-
units=crystal.basis.units,
|
|
25
|
-
cell=crystal.basis.cell,
|
|
26
|
-
)
|
|
27
|
-
basis.add_atom(
|
|
28
|
-
element=configuration.element.chemical_element,
|
|
29
|
-
coordinate=configuration.coordinate,
|
|
30
|
-
label=configuration.host_atom_label,
|
|
31
|
-
)
|
|
32
|
-
return MaterialWithBuildMetadata(name=crystal.name, lattice=crystal.lattice, basis=basis)
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
from typing import Optional, Union
|
|
2
|
-
|
|
3
|
-
from mat3ra.esse.models.materials_category.defective_structures.two_dimensional.adatom.configuration import (
|
|
4
|
-
PointDefectSiteSchema,
|
|
5
|
-
)
|
|
6
|
-
from mat3ra.esse.models.materials_category_components.entities.core.zero_dimensional.atom import AtomSchema
|
|
7
|
-
from mat3ra.esse.models.materials_category_components.entities.core.zero_dimensional.vacancy import VacancySchema
|
|
8
|
-
|
|
9
|
-
from ..crystal_site import CrystalSite
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
class PointDefectSiteConfiguration(CrystalSite, PointDefectSiteSchema):
|
|
13
|
-
element: Union[VacancySchema, AtomSchema]
|
|
14
|
-
host_atom_label: Optional[Union[int, str]] = None
|
|
File without changes
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
from typing import Type
|
|
2
|
-
|
|
3
|
-
from ......build_components import MaterialWithBuildMetadata
|
|
4
|
-
from ......modify import filter_by_condition_on_coordinates
|
|
5
|
-
from ..point_defect_site.builder import PointDefectSiteBuilder
|
|
6
|
-
from ..void_region.configuration import VoidRegionConfiguration
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
class VoidRegionBuilder(PointDefectSiteBuilder):
|
|
10
|
-
"""
|
|
11
|
-
Builder class for creating a material with a void region based on a coordinate condition.
|
|
12
|
-
Uses "Vac" as the element for all atoms that fall outside the specified coordinate condition
|
|
13
|
-
and those positions will void elements in target crystal when merging.
|
|
14
|
-
"""
|
|
15
|
-
|
|
16
|
-
_ConfigurationType: Type[VoidRegionConfiguration] = VoidRegionConfiguration
|
|
17
|
-
|
|
18
|
-
def _generate(self, configuration: VoidRegionConfiguration) -> MaterialWithBuildMetadata:
|
|
19
|
-
filtered_material = filter_by_condition_on_coordinates(
|
|
20
|
-
configuration.crystal,
|
|
21
|
-
configuration.coordinate_condition.condition,
|
|
22
|
-
use_cartesian_coordinates=configuration.use_cartesian_coordinates,
|
|
23
|
-
invert_selection=not configuration.invert_selection,
|
|
24
|
-
)
|
|
25
|
-
|
|
26
|
-
# Replace all elements with "Vac"
|
|
27
|
-
filtered_material.basis.elements.values = ["Vac"] * len(filtered_material.basis.elements.values)
|
|
28
|
-
|
|
29
|
-
return filtered_material
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
from typing import Union
|
|
2
|
-
|
|
3
|
-
from mat3ra.esse.models.materials_category_components.entities.auxiliary.zero_dimensional.void_region import (
|
|
4
|
-
VoidRegionSchema,
|
|
5
|
-
)
|
|
6
|
-
|
|
7
|
-
from ......entities.coordinate import BoxCoordinateCondition, CoordinateCondition, SphereCoordinateCondition
|
|
8
|
-
from ..... import MaterialWithBuildMetadata
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
class VoidRegionConfiguration(VoidRegionSchema):
|
|
12
|
-
crystal: MaterialWithBuildMetadata
|
|
13
|
-
coordinate_condition: Union[SphereCoordinateCondition, BoxCoordinateCondition, CoordinateCondition]
|
|
14
|
-
use_cartesian_coordinates: bool = False
|
|
15
|
-
invert_selection: bool = False
|
|
16
|
-
|
|
17
|
-
@property
|
|
18
|
-
def condition_name(self):
|
|
19
|
-
return self.coordinate_condition.__class__.__name__.replace("CoordinateCondition", "")
|
package/src/py/mat3ra/made/tools/build_components/entities/core/two_dimensional/vacuum/builder.py
DELETED
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
from typing import Any, Optional, Type
|
|
2
|
-
|
|
3
|
-
from mat3ra.esse.models.core.reusable.axis_enum import AxisEnum
|
|
4
|
-
from mat3ra.made.utils import AXIS_TO_INDEX_MAP
|
|
5
|
-
|
|
6
|
-
from ..... import MaterialWithBuildMetadata
|
|
7
|
-
from ....reusable.base_builder import BaseSingleBuilder, TypeConfiguration
|
|
8
|
-
from .configuration import VacuumConfiguration
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
class VacuumBuilder(BaseSingleBuilder):
|
|
12
|
-
_ConfigurationType: Type[VacuumConfiguration] = VacuumConfiguration
|
|
13
|
-
|
|
14
|
-
def get_material(
|
|
15
|
-
self,
|
|
16
|
-
configuration: TypeConfiguration,
|
|
17
|
-
post_process_parameters: Optional[Any] = None,
|
|
18
|
-
) -> Optional[MaterialWithBuildMetadata]:
|
|
19
|
-
if configuration.size == 0.0:
|
|
20
|
-
return None
|
|
21
|
-
return super().get_material(configuration, post_process_parameters)
|
|
22
|
-
|
|
23
|
-
def _generate(self, configuration: TypeConfiguration) -> MaterialWithBuildMetadata:
|
|
24
|
-
reference = configuration.crystal
|
|
25
|
-
if reference is None:
|
|
26
|
-
raise ValueError("VacuumConfiguration.crystal must be provided to build a vacuum material.")
|
|
27
|
-
size = configuration.size
|
|
28
|
-
direction: AxisEnum = configuration.direction
|
|
29
|
-
|
|
30
|
-
lattice_vectors = reference.lattice.vector_arrays.copy()
|
|
31
|
-
|
|
32
|
-
# Replace the target direction with the vacuum vector
|
|
33
|
-
axis = AXIS_TO_INDEX_MAP[direction.value]
|
|
34
|
-
vacuum_vector = [0.0, 0.0, 0.0]
|
|
35
|
-
vacuum_vector[axis] = size
|
|
36
|
-
lattice_vectors[axis] = vacuum_vector
|
|
37
|
-
|
|
38
|
-
vacuum_lattice = reference.lattice.from_vectors_array(
|
|
39
|
-
lattice_vectors, reference.lattice.units, reference.lattice.type
|
|
40
|
-
)
|
|
41
|
-
|
|
42
|
-
return MaterialWithBuildMetadata.create(
|
|
43
|
-
{
|
|
44
|
-
"name": "Vacuum",
|
|
45
|
-
"lattice": vacuum_lattice.to_dict(),
|
|
46
|
-
"basis": {"elements": [], "coordinates": []},
|
|
47
|
-
}
|
|
48
|
-
)
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
from typing import Optional, Union
|
|
2
|
-
|
|
3
|
-
from mat3ra.esse.models.core.reusable.axis_enum import AxisEnum
|
|
4
|
-
from mat3ra.esse.models.materials_category_components.entities.core.two_dimensional.vacuum import (
|
|
5
|
-
VacuumConfigurationSchema,
|
|
6
|
-
)
|
|
7
|
-
from mat3ra.made.material import Material
|
|
8
|
-
from mat3ra.made.tools.build_components.entities.reusable.base_builder import BaseConfigurationPydantic
|
|
9
|
-
|
|
10
|
-
from ..... import MaterialWithBuildMetadata
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
class VacuumConfiguration(VacuumConfigurationSchema, BaseConfigurationPydantic):
|
|
14
|
-
type: str = "VacuumConfiguration"
|
|
15
|
-
size: float = VacuumConfigurationSchema.model_fields["size"].default
|
|
16
|
-
crystal: Union[Material, MaterialWithBuildMetadata, None] = None
|
|
17
|
-
direction: Optional[AxisEnum] = AxisEnum.z
|
package/src/py/mat3ra/made/tools/build_components/entities/core/zero_dimensional/atom/builder.py
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
from mat3ra.esse.models.core.reusable.axis_enum import AxisEnum
|
|
2
|
-
|
|
3
|
-
from ..... import MaterialWithBuildMetadata
|
|
4
|
-
from ...two_dimensional.vacuum.builder import VacuumBuilder
|
|
5
|
-
from ...two_dimensional.vacuum.configuration import VacuumConfiguration
|
|
6
|
-
from .configuration import AtomAtCoordinateConfiguration
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
class AtomAtCoordinateBuilder(VacuumBuilder):
|
|
10
|
-
_ConfigurationType = AtomAtCoordinateConfiguration
|
|
11
|
-
|
|
12
|
-
def _generate(self, configuration: AtomAtCoordinateConfiguration) -> MaterialWithBuildMetadata:
|
|
13
|
-
if not configuration.crystal:
|
|
14
|
-
raise ValueError("Crystal must be provided for AtomAtCoordinateConfiguration")
|
|
15
|
-
vacuum_configuration = VacuumConfiguration(
|
|
16
|
-
crystal=configuration.crystal,
|
|
17
|
-
size=configuration.crystal.lattice.c,
|
|
18
|
-
direction=AxisEnum.z,
|
|
19
|
-
)
|
|
20
|
-
new_material = super()._generate(vacuum_configuration)
|
|
21
|
-
new_material.basis.add_atom(
|
|
22
|
-
element=configuration.element.chemical_element.value,
|
|
23
|
-
coordinate=configuration.coordinate,
|
|
24
|
-
)
|
|
25
|
-
return new_material
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
from mat3ra.esse.models.materials_category_components.entities.core.zero_dimensional.atom import AtomSchema
|
|
2
|
-
|
|
3
|
-
from ....auxiliary.zero_dimensional.point_defect_site.configuration import PointDefectSiteConfiguration
|
|
4
|
-
from ...two_dimensional.vacuum.configuration import VacuumConfiguration
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
class AtomAtCoordinateConfiguration(VacuumConfiguration, PointDefectSiteConfiguration):
|
|
8
|
-
element: AtomSchema
|
|
File without changes
|
package/src/py/mat3ra/made/tools/build_components/entities/reusable/base_builder/__init__.py
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
from typing import TypeVar
|
|
2
|
-
|
|
3
|
-
from .base_configuration_pydantic import BaseConfigurationPydantic
|
|
4
|
-
from .base_single_builder import BaseSingleBuilder, TypeBuildParameters, TypeConfiguration
|
|
5
|
-
from .build_parameters import BaseBuilderParameters
|
|
6
|
-
|
|
7
|
-
BaseConfigurationPydanticChild = TypeVar("BaseConfigurationPydanticChild", bound="BaseConfigurationPydantic")
|
|
8
|
-
|
|
9
|
-
__all__ = [
|
|
10
|
-
"BaseConfigurationPydantic",
|
|
11
|
-
"BaseBuilderParameters",
|
|
12
|
-
"BaseSingleBuilder",
|
|
13
|
-
"TypeConfiguration",
|
|
14
|
-
"TypeBuildParameters",
|
|
15
|
-
"BaseConfigurationPydanticChild",
|
|
16
|
-
]
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
from typing import Any, Generic, Optional, Type, TypeVar
|
|
2
|
-
|
|
3
|
-
from mat3ra.made.tools.build_components.metadata import MaterialWithBuildMetadata
|
|
4
|
-
from pydantic import BaseModel
|
|
5
|
-
|
|
6
|
-
from .base_configuration_pydantic import BaseConfigurationPydantic
|
|
7
|
-
from .build_parameters import BaseBuilderParameters
|
|
8
|
-
|
|
9
|
-
TypeConfiguration = TypeVar("TypeConfiguration", bound=BaseConfigurationPydantic)
|
|
10
|
-
TypeBuildParameters = TypeVar("TypeBuildParameters", bound=BaseBuilderParameters)
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
class BaseSingleBuilder(BaseModel, Generic[TypeConfiguration, TypeBuildParameters]):
|
|
14
|
-
"""
|
|
15
|
-
Base class for material builders.
|
|
16
|
-
This class provides an interface for generating materials and getter functions.
|
|
17
|
-
The builder is meant as a description of the process, while its functions require a
|
|
18
|
-
"Configuration" class instance to perform the generation.
|
|
19
|
-
|
|
20
|
-
The class is designed to be subclassed and the subclass should implement the following methods:
|
|
21
|
-
|
|
22
|
-
- `_generate`: Generate the material items, possibly using third-party tools/implementation for items.
|
|
23
|
-
- `_sort`: Sort the items.
|
|
24
|
-
- `_select`: Select a subset of the items.
|
|
25
|
-
- `_post_process`: Post-process the items to convert them to materials (Material class).
|
|
26
|
-
- `_finalize`: Finalize the materials.
|
|
27
|
-
|
|
28
|
-
The subclass should also define the following attributes:
|
|
29
|
-
|
|
30
|
-
- `_BuildParametersType`: The data structure model for the build parameters.
|
|
31
|
-
- `_DefaultBuildParameters`: The default build parameters.
|
|
32
|
-
- `_ConfigurationType`: The data structure model for the Configuration used during the build.
|
|
33
|
-
- `_GeneratedItemType`: The type of the generated item.
|
|
34
|
-
- `_SelectorParametersType`: The data structure model for the selector parameters.
|
|
35
|
-
- `_PostProcessParametersType`: The data structure model for the post-process parameters.
|
|
36
|
-
"""
|
|
37
|
-
|
|
38
|
-
model_config = {"arbitrary_types_allowed": True}
|
|
39
|
-
|
|
40
|
-
build_parameters: Optional[TypeBuildParameters] = None
|
|
41
|
-
_BuildParametersType: Type[TypeBuildParameters] = BaseBuilderParameters
|
|
42
|
-
_DefaultBuildParameters: TypeBuildParameters = BaseBuilderParameters()
|
|
43
|
-
|
|
44
|
-
_ConfigurationType: Type[TypeConfiguration] = BaseConfigurationPydantic
|
|
45
|
-
_PostProcessParametersType: Any = None
|
|
46
|
-
|
|
47
|
-
def __init__(self, build_parameters: Optional[TypeBuildParameters] = None):
|
|
48
|
-
super().__init__()
|
|
49
|
-
self.build_parameters = build_parameters if build_parameters is not None else self._DefaultBuildParameters
|
|
50
|
-
|
|
51
|
-
def _generate(self, configuration: TypeConfiguration) -> MaterialWithBuildMetadata:
|
|
52
|
-
raise NotImplementedError
|
|
53
|
-
|
|
54
|
-
def _post_process(
|
|
55
|
-
self,
|
|
56
|
-
item: MaterialWithBuildMetadata,
|
|
57
|
-
post_process_parameters: Optional[Any],
|
|
58
|
-
configuration: Optional[TypeConfiguration] = None,
|
|
59
|
-
) -> MaterialWithBuildMetadata:
|
|
60
|
-
return item
|
|
61
|
-
|
|
62
|
-
def _finalize(
|
|
63
|
-
self, material: MaterialWithBuildMetadata, configuration: TypeConfiguration
|
|
64
|
-
) -> MaterialWithBuildMetadata:
|
|
65
|
-
material_with_metadata = self._update_material_metadata(material, configuration)
|
|
66
|
-
return self._update_material_name(material_with_metadata, configuration)
|
|
67
|
-
|
|
68
|
-
def get_material(
|
|
69
|
-
self,
|
|
70
|
-
configuration: TypeConfiguration,
|
|
71
|
-
post_process_parameters: Optional[Any] = None,
|
|
72
|
-
) -> MaterialWithBuildMetadata:
|
|
73
|
-
generated_item = self._generate(configuration)
|
|
74
|
-
material = self._post_process(generated_item, post_process_parameters, configuration)
|
|
75
|
-
finalized_material = self._finalize(material, configuration)
|
|
76
|
-
return finalized_material
|
|
77
|
-
|
|
78
|
-
def _update_material_name(
|
|
79
|
-
self, material: MaterialWithBuildMetadata, configuration: TypeConfiguration
|
|
80
|
-
) -> MaterialWithBuildMetadata:
|
|
81
|
-
return material
|
|
82
|
-
|
|
83
|
-
def _update_material_metadata(
|
|
84
|
-
self, material: MaterialWithBuildMetadata, configuration: TypeConfiguration
|
|
85
|
-
) -> MaterialWithBuildMetadata:
|
|
86
|
-
material.metadata.add_build_metadata_step(configuration=configuration, build_parameters=self.build_parameters)
|
|
87
|
-
return material
|
package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/__init__.py
DELETED
|
File without changes
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
from typing import Any, Optional, Union
|
|
2
|
-
|
|
3
|
-
from mat3ra.made.material import Material
|
|
4
|
-
from mat3ra.made.tools.build_components.entities.reusable.base_builder import BaseSingleBuilder, TypeConfiguration
|
|
5
|
-
|
|
6
|
-
from ......analyze.lattice_lines import CrystalLatticeLinesMaterialAnalyzer
|
|
7
|
-
from ......build.pristine_structures.two_dimensional.slab.utils import get_orthogonal_c_slab
|
|
8
|
-
from ......modify import translate_to_z_level
|
|
9
|
-
from ......operations.core.unary import supercell
|
|
10
|
-
from ..... import MaterialWithBuildMetadata
|
|
11
|
-
from .configuration import CrystalLatticeLinesConfiguration
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
class CrystalLatticeLinesBuilder(BaseSingleBuilder):
|
|
15
|
-
"""
|
|
16
|
-
Builder for creating a single crystal lattice line with termination.
|
|
17
|
-
This is similar to CrystalLatticePlanesBuilder but for 1D lines.
|
|
18
|
-
"""
|
|
19
|
-
|
|
20
|
-
_PostProcessParametersType: Any = None
|
|
21
|
-
use_enforce_convention: bool = True
|
|
22
|
-
|
|
23
|
-
def _generate(self, configuration: CrystalLatticeLinesConfiguration) -> Material:
|
|
24
|
-
crystal_lattice_lines_analyzer = CrystalLatticeLinesMaterialAnalyzer(
|
|
25
|
-
material=configuration.crystal, miller_indices_2d=configuration.miller_indices_2d
|
|
26
|
-
)
|
|
27
|
-
miller_supercell_matrix = crystal_lattice_lines_analyzer.miller_supercell_matrix
|
|
28
|
-
miller_supercell_material = supercell(configuration.crystal, miller_supercell_matrix)
|
|
29
|
-
# Lattice returned with vector B being treated as the direction to the surface, needs to be swaped with C
|
|
30
|
-
rotated_material = supercell(miller_supercell_material, [[1, 0, 0], [0, 0, 1], [0, 1, 0]])
|
|
31
|
-
orthogonal_material = get_orthogonal_c_slab(rotated_material)
|
|
32
|
-
return orthogonal_material
|
|
33
|
-
|
|
34
|
-
def _enforce_convention(self, material: Union[Material, MaterialWithBuildMetadata]) -> Material:
|
|
35
|
-
if not self.use_enforce_convention:
|
|
36
|
-
return material
|
|
37
|
-
return translate_to_z_level(material, "bottom")
|
|
38
|
-
|
|
39
|
-
def _post_process(
|
|
40
|
-
self,
|
|
41
|
-
item: Material,
|
|
42
|
-
post_process_parameters: Optional[Any],
|
|
43
|
-
configuration: Optional[TypeConfiguration] = None,
|
|
44
|
-
) -> Material:
|
|
45
|
-
item = super()._post_process(item, post_process_parameters, configuration)
|
|
46
|
-
return self._enforce_convention(item)
|