igl.spectral
Spectral formulation of IGL: eigendecomposition-based Green's kernels + null-space augmentation.
Not flattened into the top-level igl namespace. Import explicitly::
from igl.spectral import SpectralKernel, FourierSineBasis, ConstantNullSpace
Mathematical setup
For an operator \(L\) with eigendecomposition \(L \phi_n = \lambda_n \phi_n\), the Green's function is
Zero-\(\lambda\) modes ARE the null space — modes the Green's function
cannot reach. The kernel-agnostic
NullSpaceBasis adds them back as extra
design-matrix columns whose coefficients are fitted by lstsq without
Tikhonov shrinkage.
SpectralKernel
igl.spectral.kernel.SpectralKernel
Bases: Module
Spectral Green's-function kernel.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
latent_dim
|
int
|
Latent dimensionality |
required |
bases
|
SpectralBasis | Sequence[SpectralBasis]
|
One :class: |
required |
n_anchors
|
int
|
Number of anchor positions |
64
|
null_space
|
NullSpaceBasis | None
|
Optional :class: |
None
|
epsilon
|
float
|
Floor applied to eigenvalues (additional safety on top of the basis's own clamping). |
0.0001
|
anchor_init_std
|
float
|
Std-dev of the Gaussian initialiser for the learnable anchor positions. |
0.25
|
Raises:
| Type | Description |
|---|---|
IGLConfigError
|
On shape mismatches or invalid hyperparameters. |
compute_design_matrix(z, *, gate_mask=None)
Build the design matrix.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
z
|
Tensor
|
|
required |
gate_mask
|
Tensor | None
|
Optional |
None
|
Returns:
| Type | Description |
|---|---|
Tensor
|
|
Closed-form 1-D bases
igl.spectral.bases.fourier_sine.FourierSineBasis
Bases: Module
1-D Fourier sine spectral basis (Dirichlet BCs).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
n_modes
|
int
|
Number of modes |
16
|
Raises:
| Type | Description |
|---|---|
IGLConfigError
|
For |
igl.spectral.bases.fourier_cosine.FourierCosineBasis
Bases: Module
1-D Fourier cosine spectral basis (Neumann BCs).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
n_modes
|
int
|
Number of modes |
16
|
epsilon
|
float
|
Floor applied to the zero eigenvalue so the kernel's
|
0.0001
|
Raises:
| Type | Description |
|---|---|
IGLConfigError
|
For |
igl.spectral.bases.chebyshev.ChebyshevBasis
Bases: Module
1-D Chebyshev (first-kind) spectral basis.
Inputs are mapped from [0, 1] to [-1, 1] via
x = 2 z − 1 before evaluation.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
n_modes
|
int
|
Number of modes |
16
|
epsilon
|
float
|
Floor applied to the zero eigenvalue ( |
0.0001
|
Raises:
| Type | Description |
|---|---|
IGLConfigError
|
For |
igl.spectral.bases.legendre.LegendreBasis
Bases: Module
1-D Legendre spectral basis.
Inputs mapped from [0, 1] to [-1, 1] via x = 2 z − 1.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
n_modes
|
int
|
Number of modes |
16
|
epsilon
|
float
|
Floor applied to |
0.0001
|
Raises:
| Type | Description |
|---|---|
IGLConfigError
|
For |
igl.spectral.bases.hermite.HermiteBasis
Bases: Module
1-D Hermite-function spectral basis (Gaussian-weighted domain).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
n_modes
|
int
|
Number of modes |
16
|
Raises:
| Type | Description |
|---|---|
IGLConfigError
|
For |
igl.spectral.bases.laguerre.LaguerreBasis
Bases: Module
1-D Laguerre-function spectral basis (exponentially-weighted domain).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
n_modes
|
int
|
Number of modes |
16
|
Raises:
| Type | Description |
|---|---|
IGLConfigError
|
For |
Data-driven bases
igl.spectral.bases.learned_lb.LearnedLaplacianBasis
Bases: Module
Numerically-estimated Laplace–Beltrami spectrum on a learned manifold.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
n_modes
|
int
|
Number of eigenmodes |
16
|
k_nn
|
int
|
Number of nearest neighbours used to build the graph. |
10
|
epsilon
|
float
|
Floor applied to the zero eigenvalue ( |
0.0001
|
Raises:
| Type | Description |
|---|---|
IGLConfigError
|
For invalid hyperparameters. |
Attributes:
| Name | Type | Description |
|---|---|---|
is_refreshed |
bool
|
|
evaluate(z)
Nyström-extend the eigenfunctions to z.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
z
|
Tensor
|
|
required |
Returns:
| Type | Description |
|---|---|
Tensor
|
|
Raises:
| Type | Description |
|---|---|
IGLConfigError
|
If :meth: |
refresh(z)
Recompute the LB spectrum from a fresh set of encoded latents.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
z
|
Tensor
|
|
required |
igl.spectral.bases.graph_laplacian.GraphLaplacianBasis
Bases: Module
Graph-Laplacian spectral basis.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
adjacency
|
Tensor | ndarray | spmatrix
|
|
required |
n_modes
|
int
|
Number of eigenmodes |
16
|
normalization
|
GraphLaplacianNormLike
|
One of :class: |
SYMMETRIC
|
epsilon
|
float
|
Floor applied to |
0.0001
|
Raises:
| Type | Description |
|---|---|
IGLConfigError
|
For invalid shapes or hyperparameters. |
evaluate(z)
Return eigenfunction values at the given node indices.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
z
|
Tensor
|
|
required |
Returns:
| Type | Description |
|---|---|
Tensor
|
|
Mixtures
igl.spectral.multi.MultiSpectralBasis
Bases: Module
A weighted concatenation of several :class:SpectralBasis instances.
Implements the :class:SpectralBasis Protocol: n_modes is the
sum of the sub-bases' mode counts, eigenvalues is the concatenated
vector, and null_indices is the union of the sub-bases' null
indices (re-numbered to account for offsets).
The mixing weights are softmax-normalised mode-block weights — every basis is multiplied by a learned (or fixed) coefficient so the optimiser can up- or down-weight a contribution.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
bases
|
Sequence[SpectralBasis]
|
Sequence of two or more :class: |
required |
learnable
|
bool
|
When |
True
|
Raises:
| Type | Description |
|---|---|
IGLConfigError
|
For empty or singleton sequences. |
evaluate(z)
Evaluate every sub-basis and weight by the softmax-mixed coefficients.
Null-space augmentation
igl.spectral.null_space.ConstantNullSpace
One column of ones — the DC mode.
Standard null space for the Neumann Laplacian (constants are
harmonic with the Neumann boundary condition). Useful in general as
a cheap way to give a local :class:igl.GreenKernel a DC mode it
otherwise lacks.
igl.spectral.null_space.PolynomialNullSpace
Constants + per-dimension monomials up to degree.
For degree = 1: one column of ones plus d columns z_j.
For degree = 2: also includes z_j^2. Up to degree = k:
the constant plus all univariate monomials per dimension —
contains the harmonics of the Euclidean Laplacian up to that
degree (mixed monomials like z_j z_k are not included; users
needing those can subclass :class:CustomNullSpace).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
latent_dim
|
int
|
Number of input dimensions |
required |
degree
|
int
|
Maximum monomial degree (inclusive). Default |
1
|
Raises:
| Type | Description |
|---|---|
IGLConfigError
|
For |
igl.spectral.null_space.CustomNullSpace
Wraps a user-supplied callable as a :class:NullSpaceBasis.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
fn
|
Callable[[Tensor], Tensor]
|
Callable |
required |
n_columns
|
int
|
Number of columns the callable returns. |
required |
Raises:
| Type | Description |
|---|---|
IGLConfigError
|
When |
igl.spectral.null_space.build_null_space(kind, *, latent_dim, degree=1)
Build a built-in null space from a :class:NullSpaceKind.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
kind
|
NullSpaceKindLike
|
One of :data: |
required |
latent_dim
|
int
|
Required for |
required |
degree
|
int
|
Forwarded to :class: |
1
|
Returns:
| Type | Description |
|---|---|
ConstantNullSpace | PolynomialNullSpace | None
|
An instance of :class: |
ConstantNullSpace | PolynomialNullSpace | None
|
|
Refresh hook
igl.spectral.refresh.LearnedLBRefresh
Refresh a :class:LearnedLaplacianBasis every every batches.
Implements :class:igl.types.ExtraLoss purely for its scheduling
semantics — it returns None (no loss contribution) and uses the
callback to invoke :meth:LearnedLaplacianBasis.refresh with the
current batch's encoded latents. The first refresh happens on the
very first call.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
basis
|
LearnedLaplacianBasis
|
The learned-LB basis to keep up to date. |
required |
every
|
int
|
Refresh frequency in batches. |
200
|
weight
|
float
|
Ignored (kept for protocol compatibility); defaults to 0. |
0.0
|
Raises:
| Type | Description |
|---|---|
IGLConfigError
|
When |