netket.graph.space_group.SpaceGroup#
- class netket.graph.space_group.SpaceGroup[source]#
Bases:
PermutationGroupClass to handle the space group symmetries of a
Lattice.Can be used as a
PermutationGrouprepresenting the action of a space group on aLattice. The space group is generated as the semidirect product of the translation group of the lattice and a geometricalPointGroupgiven as a constructor argument.Also generates
PermutationGrouprepresentations ofthe supplied point group,
its rotational subgroup (i.e. point group symmetries with determinant +1)
the translation group of the lattice
as well as space group irreps for symmetrising wave functions.
- Inheritance

- __init__(*args, __precompute_cached_properties=False, __skip_preprocess=False, **kwargs)#
Constructs the space group generated by the translation symmetries of the lattice and a given point group.
- Parameters:
lattice β
LatticeThe lattice on which the space group is to act.point_group β
PointGroupThe geometrical point group underlying the space group.
- Attributes
- character_table_by_class#
Calculates the character table using Burnsideβs algorithm.
Each row of the output lists the characters of one irrep in the order the conjugacy classes are listed in
conjugacy_classes.Assumes that
Identity() == self[0], if not, the sign of some characters may be flipped. The irreps are sorted by dimension.
- conjugacy_classes#
The conjugacy classes of the group.
- Returns:
A tuple
(classes, representatives, inverse)whereclassesis a boolean array whose rows indicate the elements belonging to each conjugacy class,representativescontains the lowest-indexed member of each conjugacy class, andinversestores the conjugacy-class index of every group element.
- conjugacy_table#
The conjugacy table of the group.
Assuming the definitions
g = self[idx_g] h = self[idx_h]
self[self.conjugacy_table[idx_g,idx_h]]corresponds to \(h^{-1}gh\).
- inverse#
Indices of the inverse of each element.
Assuming the definitions
g = self[idx_g] h = self[self.inverse[idx_g]]
gh = product(g, h)is equivalent toIdentity()
- point_group_#
Returns the internally stored point group as a point group, instead of the one stored as a permutation group.
- Type:
Deprecated
- product_table#
A table of indices corresponding to \(g^{-1} h\) over the group.
Assuming the definitions
g = self[idx_g] h = self[idx_h] idx_u = self.product_table[idx_g, idx_h]
self[idx_u]corresponds to \(u = g^{-1} h\) .Computed more efficiently than for a generic
PermutationGroupexploiting the semidirect product structure of space groups.
- rotation_group#
The group of rotations (i.e. point group symmetries with determinant +1) as a
PermutationGroupacting on the sites oflattice.Group elements are listed in the order they appear in
_point_group.
- shape#
Tuple
(<# of group elements>, <degree>).Equivalent to
self.to_array().shape.
- space_group#
Deprecated. Returns
self.
- point_group: PermutationGroup#
The point group as a
PermutationGroupacting on the sites oflattice.Group elements are listed in the order they appear in
_point_group. Computed from_point_groupupon construction, must not be changed after.
- full_translation_group: TranslationGroup#
- Methods
-
- apply_to_id(x)[source]#
Returns the image of indices x under all permutations
- Parameters:
x (ndarray | Array)
- character_table(multiplier=None)[source]#
Calculates the character table using Burnsideβs algorithm.
- Parameters:
multiplier (
Union[ndarray,Array,None]) β (optional) Schur multiplier- Return type:
- Returns:
a matrix of all linear irrep characters (if
multiplier is None) or projective irrep characters with the givenmultiplier, sorted by dimension.Each row of lists the characters of all group elements for one irrep, i.e.
self.character_table()[i,g]gives \(\chi_i(g)\).
It is assumed that
Identity() == self[0]. If not, the sign of some characters may be flipped and the sorting by dimension will be wrong.
- character_table_readable(multiplier=None, full=False)[source]#
Returns a conventional rendering of the character table.
- Parameters:
- Return type:
- Returns:
A tuple
(classes, characters)whereclassesis a list of string labels for each conjugacy-class representative (or for each group element whenfull=True), andcharactersis a matrix whose rows list the characters of one irrep.
- check_multiplier(multiplier, rtol=1e-08, atol=0)[source]#
Checks the associativity constraint of Schur multipliers.
\[\alpha(x, y) \alpha(xy, z) = \alpha(x, yz) \alpha(y, z).\]- Parameters:
multiplier (
Union[ndarray,Array]) β the array of Schur multipliers \(\alpha(x,y)\)rtol β relative tolerance
atol β absolute tolerance
- Return type:
- Returns:
whether
multiplieris a valid Schur multiplier up to the given tolerance- Raises:
ValueError β if the shape of multiplier does not match the size of the group
- is_subgroup(other, *, proper=False)[source]#
Return True if
otheris a subgroup ofself.Checks Lagrangeβs theorem (
|self|divisible by|other|) and that every element ofotheris present inself.- Parameters:
other (
FiniteGroup) β the candidate subgroup.proper (
bool) β if True, also require|other| < |self|(i.e.other != self).
- Return type:
- Returns:
True if every element of
otherbelongs toself(andotheris strictly smaller ifproper=True).
- little_group(*k)[source]#
Returns the little co-group corresponding to wave vector \(\vec{k}\). This is the subgroup of the point group that leaves \(\vec{k}\) invariant.
- Parameters:
k (
Union[ndarray,Array]) β the wave vector in Cartesian axes- Return type:
- Returns:
the little co-group
- little_group_irreps_readable(*k, full=False)[source]#
Returns a conventional rendering of little-group irrep characters.
This differs from
little_group(k).character_table_readable()in that nontrivial Schur multipliers for nonsymmorphic space group are automatically taken into account.- Parameters:
- Returns:
A tuple containing a list of strings and an array
classes: a text description of a representative of each conjugacy class (or each element) of the little group as a listcharacters: a matrix, each row of which lists the characters of one irrep
- little_group_multipliers(*k)[source]#
Computes the Schur multiplier associated with the little group given the translations associated with its elements.
The mutlipliers are given by (Bradney & Cracknell, eqs. 3.7.11-14)
\[ \begin{align}\begin{aligned}\mu(S_i, S_j) &= \exp(-i g_i \cdot w_j)\\g_i &= S_i^{-1} k - k\end{aligned}\end{align} \]and \(w_j\) is the translation associated with point-group symmetry \(S_i\).
- Parameters:
k (
Union[ndarray,Array]) β the wave vector in Cartesian axes- Return type:
- Returns:
A square array of the \(\mu(S_i, S_j)\).
If all multipliers are +1,
Noneis returned instead: this signals tocharacter_table()etc. that linear (not projective) representations are required.
- one_arm_irreps(*k)[source]#
Returns the portion of the character table of the full space group corresponding to the star of the wave vector \(\vec{k}\), projected onto \(\vec{k}\) itself.
- Parameters:
k (
Union[ndarray,Array]) β the wave vector in Cartesian axes- Return type:
Union[ndarray,Array]- Returns:
An array CT listing the projected characters for all irreps of the space group defined on the star of \(\vec{k}\).
CT[i]returns the irrep corresponding to the little-group irrep listed in row #i bylittle_group_irreps_readable().CT[i,j]gives the character ofself[j]in the same.
- projective_characters_by_class(multiplier)[source]#
Calculates the character table of projective representations with a given Schur multiplier Ξ± using a modified Burnside algorithm.
- Parameters:
multiplier (
Union[ndarray,Array,None]) β the unitary Schur multiplier. If unspecified, computes linear representation characters.- Return type:
- Returns:
If
multiplierisNone, returnscharacters_by_class, a 2D array whose rows contain the characters of one linear irrep evaluated on a representative of each conjugacy class. Otherwise it returns a tuple(characters_by_class, class_factors), whereclass_factorsis a 1D array listing the per-element factors needed to recover the character of each element from the character of its class representative.
Note: the algorithm and the definitions above are explained in more detail in https://arxiv.org/abs/2505.14790.
- remove_duplicates(*, return_inverse=False)[source]#
Returns a new
PermutationGroupwith duplicate elements (that is, elements which represent identical permutations) removed.- Parameters:
return_inverse β If True, also return indices to reconstruct the original group from the result.
- Returns:
The permutation group with duplicate elements removed. If
return_inverse==True, it also returns the indices needed to reconstruct the original group from the result.
- space_group_irreps(*k)[source]#
Returns the portion of the character table of the full space group corresponding to the star of the wave vector \(\vec{k}\).
- Parameters:
k (
Union[ndarray,Array]) β the wave vector in Cartesian axes- Return type:
Union[ndarray,Array]- Returns:
An array
CTlisting the characters for all irreps of the space group defined on the star of \(\vec{k}\).CT[i]returns the irrep corresponding to the little-group irrep listed in row #i bylittle_group_irreps_readable().CT[i,j]gives the character ofself[j]in the same.
- to_array()[source]#
Convert the abstract group operations to an array of permutation indices.
It returns a matrix where the i-th row contains the indices corresponding to the i-th group element. That is,
self.to_array()[i, j]is \(g_i^{-1}(j)\). Moreover,G = # this permutation group... V = np.arange(G.degree) assert np.all(G(V) == V[..., G.to_array()])
- Return type:
Union[ndarray,Array]- Returns:
A matrix that can be used to index arrays in the computational basis in order to obtain their permutations.
- translation_group(axes=None)[source]#
The group of valid translations of
latticeas aTranslationGroupacting on the sites of the same.- Return type:
- Parameters: