netket.symmetry.group.PointGroup#
- class netket.symmetry.group.PointGroup[source]#
Bases:
FiniteGroupCollection of point group symmetries acting on n-dimensional vectors.
Group elements need not all be of type
netket.utils.group.PGSymmetry, only act on such vectors when called. Currently, however, onlyIdentityandPGSymmetryhave canonical forms implemented.The class can contain elements that are distinct as objects (e.g.,
Identity()andRotation(0)) but have identical action. Those can be removed by callingremove_duplicates.- Inheritance

- 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()
- is_symmorphic#
Trueif the point group is symmorphic, i.e., if every group element leaves the origin invariant.
- 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\) .
- shape#
Tuple (<# of group elements>, <ndim>, <ndim>). Equivalent to
self.to_array().shape.
- Methods
-
- change_origin(origin)[source]#
Returns a new PointGroup, out, such that all elements of out describe pure point-group transformations around origin and out[i] has the same transformation matrix as self[i].
- Return type:
- Parameters:
origin (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).
- 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
PointGroupwith duplicate elements (that is, elements which represent identical transformations) removed.- Parameters:
return_inverse – If True, also return indices to reconstruct the original group from the result.
- Returns:
The point group with duplicate elements removed. If
return_inverse==True, then it also returns the list of indices needed to reconstruct the original group from the result.
- rotation_group()[source]#
Returns a new PointGroup that represents the subgroup of rotations (i.e. symmetries where the determinant of the transformation matrix is +1) in self
- Return type:
- to_array()[source]#
Convert the abstract group operations to an array of transformation matrices
For symmorphic groups, self.to_array()[i] contains the transformation matrix of the i`th group element. For nonsymmorphic groups, `self.to_array()[i] is a (d+1)×(d+1) block matrix of the form [[W,w],[0,1]]: multiplying these matrices is equivalent to multiplying the symmetry operations.
- Return type:
Union[ndarray,Array]