pymatgen.symmetry.bandstructure module

Provides a class for interacting with KPath classes to generate high-symmetry k-paths using different conventions.

class HighSymmKpath(structure, has_magmoms=False, magmom_axis=None, path_type='sc', symprec=0.01, angle_tolerance=5, atol=1e-05)[source]

Bases: pymatgen.symmetry.kpath.KPathBase

This class generates path along high symmetry lines in the Brillouin zone according to different conventions. The class is designed to be used with a specific primitive cell setting. The definitions for the primitive cell used can be found in: Computational Materials Science, 49(2), 299-312. doi:10.1016/j.commatsci.2010.05.010. The space group analyzer can be used to produce the correct primitive structure (method get_primitive_standard_structure(international_monoclinic=False)). Ensure input structure is correct before ‘get_kpoints()’ method is used. See individual KPath classes for details on specific conventions.

  • structure (Structure) – Structure object

  • has_magmoms (boolean) – Whether the input structure contains magnetic moments as site properties with the key ‘magmom.’ Values may be in the form of 3-component vectors given in the basis of the input lattice vectors, in which case the spin axis will default to a_3, the third real-space lattice vector (this triggers a warning).

  • magmom_axis (list or numpy array) – 3-component vector specifying direction along which magnetic moments given as scalars should point. If all magnetic moments are provided as vectors then this argument is not used.

  • path_type (string) – Chooses which convention to use to generate the high symmetry path. Options are: ‘sc’, ‘hin’, ‘lm’ for the Setyawan & Curtarolo, Hinuma et al., and Latimer & Munro conventions. Choosing ‘all’ will generate one path with points from all three conventions. Equivalent labels between each will also be generated. Order will always be Latimer & Munro, Setyawan & Curtarolo, and Hinuma et al. Lengths for each of the paths will also be generated and output as a list. Note for ‘all’ the user will have to alter the labels on their own for plotting.

  • symprec (float) – Tolerance for symmetry finding

  • angle_tolerance (float) – Angle tolerance for symmetry finding.

  • atol (float) – Absolute tolerance used to determine symmetric equivalence of points and lines on the BZ.

property equiv_labels[source]

Returns: The correspondance between the kpoint symbols in the Latimer and Munro convention, Setyawan and Curtarolo, and Hinuma conventions respectively. Only generated when path_type = ‘all’.

static get_continuous_path(bandstructure)[source]

Obtain a continous version of an inputted path using graph theory. This routine will attempt to add connections between nodes of odd-degree to ensure a Eulerian path can be formed. Initial k-path must be able to be converted to a connected graph.

Args: bandstructure (Bandstructure): Bandstructure object.

Returns: distances_map (list): Mapping of ‘distance’ segments for altering a

BSPlotter object to new continuous path. List of tuples indicating the new order of distances, and whether they should be plotted in reverse.

kpath_euler (list): New continuous kpath in the HighSymmKpath format.

property label_index[source]

Returns: The correspondance between numbers and kpoint symbols for the combined kpath generated when path_type = ‘all’. None otherwise.

property path_lengths[source]

Returns: List of lengths of the Latimer and Munro, Setyawan and Curtarolo, and Hinuma conventions in the combined HighSymmKpath object when path_type = ‘all’ respectively. None otherwise.

property path_type[source]

Returns: The type of kpath chosen