soprano.properties.symmetry.utils#

Utility functions for symmetry calculations

soprano.properties.symmetry.utils._find_wyckoff_points(a, symprec=1e-05, backend='auto')[source]#

Find and return all Wyckoff points for a given atomic system, as well as the operations that each Wyckoff point is stable under, and whether the Hessian has local radial symmetry or is definite in them.

Note: This function uses the spglib backend internally when available, because the coordinate-transform arithmetic is written against spglib’s convention for transformation_matrix and origin_shift. Moyo’s std_linear is a different matrix even at the same Hall number — there is freedom in choosing a transformation matrix up to a Euclidean normalizer, and spglib and moyo select different ones by design (see spglib/moyo#198). The backend parameter is accepted for API consistency but is overridden to "spglib" when spglib is installed; moyo is used as a fallback only when spglib is absent.

Parameters:

backend (Literal['auto', 'spglib', 'moyo'])

soprano.properties.symmetry.utils._get_symmetry_dataset(s, symprec, backend='auto')[source]#

Return a SpacegroupDataset for the given ase.Atoms object s.

Parameters:

backend (Literal['auto', 'spglib', 'moyo'])

soprano.properties.symmetry.utils._get_symmetry_ops(hall_no, backend='auto')[source]#

Return (rotations, translations) numpy arrays for hall_no.

Parameters:

backend (Literal['auto', 'spglib', 'moyo'])

soprano.properties.symmetry.utils._loci_intersect(l1, l2)[source]#

Find the locus of points at the intersection of l1 and l2

soprano.properties.symmetry.utils._wyckoff_isohess(ops)[source]#

For each set of operations in wp_ops, representing a Wyckoff point that is symmetric under them, find whether the symmetry is such that any symmetric 3x3 tensor valued function ought to be isotropic in that point