geometric_kernels.spaces.lie_groups

Abstract base interface for compact matrix Lie groups and its abstract friends, a subclass of Eigenfunctions and an abstract base class for Lie group characters.

Module Contents

class geometric_kernels.spaces.lie_groups.CompactMatrixLieGroup[source]

Bases: geometric_kernels.spaces.base.DiscreteSpectrumSpace

A base class for compact Lie groups of matrices, subgroups of the real or complex general linear group GL(n), n being some integer.

The group operation is the standard matrix multiplication, and the group inverse is the standard matrix inverse. Despite this, we make the subclasses implement their own inverse routine, because in special cases it can typically be implemented much more efficiently. For example, for the special orthogonal group SpecialOrthogonal, the inverse is equivalent to a simple transposition.

abstract static inverse(X)[source]

Inverse of a batch X of the elements of the group. A static method.

Parameters:

X (lab.Numeric) – A batch […, n, n] of elements of the group. Each element is a n x n matrix.

Returns:

A batch […, n, n] with each n x n matrix inverted.

Return type:

lab.Numeric

class geometric_kernels.spaces.lie_groups.LieGroupCharacter[source]

Bases: abc.ABC

Class that represents a character of a Lie group.

abstract __call__(gammas)[source]

Compute the character on gammas lying in a maximal torus.

Parameters:

gammas (lab.Numeric) – […, rank] where rank is the dimension of a maximal torus.

Returns:

An array of shape […] representing the values of the characters. The values can be complex-valued.

Return type:

lab.Numeric

class geometric_kernels.spaces.lie_groups.WeylAdditionTheorem(n, num_levels, compute_characters=True)[source]

Bases: geometric_kernels.spaces.eigenfunctions.EigenfunctionsWithAdditionTheorem

A class for computing the sums of outer products of certain combinations (we call “levels”) of Laplace-Beltrami eigenfunctions on compact Lie groups. These are much like the zonal spherical harmonics of the SphericalHarmonics class. However, the key to computing them is representation-theoretic: they are proportional to characters of irreducible unitary representations of the group. These characters, in their turn, can be algebraically computed using the Weyl character formula. See Azangulov et al. [2022] for the mathematical details behind this class.

Parameters:
  • n (int) – The order of the Lie group, e.g. for SO(5) this is 5, for SU(3) this is 3.

  • num_levels (int) – The number of levels used for kernel approximation. Here, each level corresponds to an irreducible unitary representation of the group.

  • compute_characters (bool) –

    Whether or not to actually compute the characters. Setting this parameter to False might make sense if you do not care about eigenfunctions (or sums of outer products thereof), but care about eigenvalues, dimensions of irreducible unitary representations, etc.

    Defaults to True.

Note

Unlike SphericalHarmonics, we do not expect the descendants of this class to compute the actual Laplace-Beltrami eigenfunctions (which are similar to (non-zonal) spherical harmonics of SphericalHarmonics), implementing the __call___ method. In this case, this is not really necessary and computationally harder.

Note

Unlike in SphericalHarmonics, here the levels do not necessarily correspond to whole eigenspaces (all eigenfunctions that correspond to the same eigenvalue). Here, levels are defined in terms of the algebraic structure of the group: they are the eigenfunctions that correspond to the same irreducible unitary representation of the group.

Note

Here we break the general convention that the subclasses of the Eigenfunctions only provide an interface for working with eigenfunctions, not eigenvalues, offering an interface for computing the latter as well.

property num_eigenfunctions: int[source]

The number J of eigenfunctions.

Return type:

int

property num_eigenfunctions_per_level: beartype.typing.List[int][source]

The number of eigenfunctions per level.

Returns:

List of squares of dimensions of the unitary irreducible representations.

Return type:

beartype.typing.List[int]

property num_levels: int[source]

The number L of levels.

Return type:

int

abstract inverse(X)[source]

Should call the group’s static inverse() method.

Parameters:

X (lab.Numeric) – As in inverse().

Return type:

lab.Numeric