netket.graph.space_group.TranslationGroup#
- class netket.graph.space_group.TranslationGroup[source]#
Bases:
PermutationGroupClass to handle translation symmetries of a
Lattice.Corresponds to a representation of the translation group on the given lattice as a permutation group of
N_sitesvariables.Can be used as a
PermutationGrouprepresenting the translations, but the product table is computed much more efficiently than in a genericPermutationGroup.- 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\).
- group_shape#
Tuple of the number of translations represented by the group along each lattice direction.
self.group_shape[i]isself.lattice.extent[i] // stride_iif bothi in self.axesandself.lattice.pbc[i] is True, otherwise 1.
- 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()Computed more efficiently than for a generic
PermutationGroupexploiting the Abelian group structure.
- 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 Abelian group structure.
- shape#
Tuple
(<# of group elements>, <degree>).Equivalent to
self.to_array().shape.
- strides: tuple[int]#
Step size (in unit cells) for translations along each axis in
axes.A stride of 1 (the default) includes all unit-cell translations along that axis. A stride of s includes only every s-th translation, giving a subgroup of size
extent // s. Must divide the lattice extent for periodic axes.
- 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.For two
TranslationGroupobjects on the same lattice, uses a cheap stride-divisibility check:otheris a subgroup ofselfiff every axis active inotheris also active inselfwith a stride that dividesother’s stride (i.e.ss % fs == 0).Falls back to the generic element-containment check for non-TranslationGroup arguments.
- momentum_irrep(*k)[source]#
Returns the irrep characters (phase factors) corresponding to crystal momentum \(\vec k\).
\(\vec k\) must be given in Cartesian units. For a lattice with extent \(L\) along an axis, the valid momenta along that axis are \(k = 2\pi m / L\) for \(m = 0, 1, \ldots, L-1\).
Example (1D chain of length 4, momentum \(k = \pi/2\)):
tg.momentum_irrep(2 * np.pi * 1 / 4) # m=1 -> k = 2π/4 = π/2
- 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.
- 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.