PhononBS

class emmet.core.phonon.PhononBS(**data)

Bases: BandStructure

Define schema of pymatgen phonon band structure.

Parameters:
  • identifier (str | None)

  • structure (Annotated[StructureTypeVar, BeforeValidator(func=~emmet.core.types.pymatgen_types.structure_adapter.pop_empty_structure_keys, json_schema_input_type=PydanticUndefined), WrapSerializer(func=~emmet.core.types.pymatgen_types.structure_adapter.<lambda>, return_type=~emmet.core.types.pymatgen_types.structure_adapter.TypedStructureDict, when_used=always)] | None)

  • run_type (RunType | None)

  • path_convention (BSPathType)

  • kpath (list[str] | None)

  • labels_dict (dict[str, tuple[float, float, float]])

  • qpoints (list[tuple[float, float, float]])

  • lattice_rec (Annotated[tuple[tuple[float, float, float], tuple[float, float, float], tuple[float, float, float]], BeforeValidator(func=~emmet.core.band_theory._deser_lattice, json_schema_input_type=PydanticUndefined)])

  • has_nac (bool)

  • bands (list[list[float]])

  • eigendisplacements (Annotated[list[list[list[tuple[complex, complex, complex]]]] | None, BeforeValidator(func=~emmet.core.phonon._deser_eigenmode, json_schema_input_type=PydanticUndefined), PlainSerializer(func=~emmet.core.phonon._ser_eigenmode, return_type=PydanticUndefined, when_used=always)])

classmethod from_pmg(config)

Ensure fields are correctly populated.

Return type:

Any

Parameters:

config (PhononBandStructureSymmLine | dict)

property primitive_structure: Structure | None

Cache primitive structure for use in computing entropy, heat capacity, etc.

property to_pmg: PhononBandStructureSymmLine

Get / cache corresponding pymatgen object.

classmethod from_phonopy(phonon_bandstructure_file, structure_file=None, path_convention=None, label_match_tol=1e-3, **kwargs)

Create a PhononBS from phonopy .yaml output.

Args: phonon_bandstructure_file (FSPathType) : path to a band.yaml-like file. structure_file (FSPathType or None) : path to a POSCAR-like structure file.

If provided, takes precedence over the structure embedded in the band.yaml.

path_convention (str or None)name of the high-symmetry path

convention used to generate the band.yaml (e.g. "latimer_munro", "setyawan_curtarolo", "hinuma"). When provided AND the band.yaml does not already carry per-entry label keys, from_phonopy reconstructs labels_dict by matching segment-boundary q-positions against pymatgen.symmetry.bandstructure.HighSymmKpath labels for the requested convention. If the lookup fails for any reason (e.g. missing optional seekpath dep for "hinuma", or no match within label_match_tol), label recovery is skipped silently.

label_match_tol (float)tolerance (in fractional reciprocal-lattice

coordinates) for matching boundary q-positions to canonical high-symmetry kpoint labels. Defaults to 1e-3.

**kwargs : other kwargs to pass to the class constructor

Return type:

Self

Parameters:
  • phonon_bandstructure_file (Annotated[str | Path | DirEntry[str] | PathLike[str], PlainSerializer(func=~emmet.core.types.typing.<lambda>, return_type=str, when_used=always)])

  • structure_file (Annotated[str | Path | DirEntry[str] | PathLike[str], PlainSerializer(func=~emmet.core.types.typing.<lambda>, return_type=str, when_used=always)] | None)

  • path_convention (str | None)

  • label_match_tol (float)

model_config: ClassVar[ConfigDict] = {'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

model_post_init(_BandStructure__context)

Override this method to perform additional initialization after __init__ and model_construct. This is useful if you want to do some validation that requires the entire model to be initialized.

Return type:

None

Parameters:

_BandStructure__context (Any)