Skip to main content
bispectrum_logo

bispectrum

Tests Pre-commit codecov

An open-source, fully unit-tested PyTorch library that implements selective G-bispectra for seven group actions as differentiable torch.nn.Modules, ready to plug into ML pipelines and deep learning architectures.

The G-bispectrum is a principled complete invariant of a signal — it retains all information up to the group action. Selectivity reduces cost from O(|G|²) to O(|G|) for finite groups, and from O(L³) to Θ(L²) coefficients for SO(3) on S².

Supported Groups

Module Group / Domain Output mode Complexity (selective)
CnonCn C_n on C_n selective + full O(n)
SO2onS1 SO(2) on S¹ selective + full O(n)
TorusOnTorus T^d selective + full O(n)
DnonDn D_n on D_n selective O(n)
SO2onDisk SO(2) on disk selective O(L)
SO3onS2 SO(3) on S² selective + full Θ(L²)
OctaonOcta chiral octahedral O (24 elements) selective 172 coefficients

SO2onS1 is the continuous-n limit of CnonCn and shares its implementation.

API

Every module exposes a uniform interface:

  • forward(f) — selective (default) or full bispectral invariants
  • fourier(f) — group Fourier coefficients
  • invert(beta) — signal reconstruction up to group-action indeterminacy (where available)

Modules default to O(|G|) selective coefficients; pass selective=False for the full O(|G|²) set. CG matrices, DFT kernels, and Bessel roots are precomputed as non-learnable buffers. Dependencies: PyTorch, NumPy, and torch_harmonics (for SO3onS2).

Benchmarks

Median wall-clock on a single NVIDIA H100 80 GB GPU (batch=16, torch.utils.benchmark):

Module Group |G| / L_max Coefs (sel.) Coefs (full) Fwd sel. (ms) Fwd full (ms)
CnonCn C_128 128 128 8,256 0.14 8.53
TorusOnTorus C_32 × C_32 1,024 1,024 524,800 0.07 0.31
DnonDn D_32 64 245 — 0.57 —
SO2onDisk SO(2) L=16 105 — 0.22 —
SO3onS2 SO(3) L=16 430 — 0.48 —
OctaonOcta O 24 172 — 0.68 —

Installation

pip install bispectrum

Or with uv:

uv pip install bispectrum

Development

git clone https://github.com/geometric-intelligence/bispectrum.git
cd bispectrum
uv pip install -e ".[dev]"
pre-commit install

Pre-commit Hooks

This project uses pre-commit for code quality checks. After installing dev dependencies, the hooks run automatically on each commit.

# Run hooks on all files (useful for first-time setup or CI)
pre-commit run --all-files

# Run a specific hook
pre-commit run ruff --all-files

# Update hooks to latest versions
pre-commit autoupdate

Usage

Cyclic group on itself

from bispectrum import CnonCn

bsp = CnonCn(n=8)
f = torch.randn(4, 8)       # signal on Z/8Z
beta = bsp(f)                # shape (4, 8), complex64
f_rec = bsp.invert(beta)     # reconstructed up to cyclic shift

SO(3) on the 2-sphere

from bispectrum import SO3onS2

# Selective bispectrum: O(L²) entries with generic completeness
bsp = SO3onS2(lmax=5, nlat=64, nlon=128, selective=True)
f = torch.randn(1, 64, 128)  # signal on S²
beta = bsp(f)                 # shape (1, 35), complex64

# Full bispectrum: O(L³) entries
bsp_full = SO3onS2(lmax=5, nlat=64, nlon=128, selective=False)
beta_full = bsp_full(f)       # shape (1, 69), complex64

Octahedral group

from bispectrum import OctaonOcta

bsp = OctaonOcta()
f = torch.randn(4, 24)       # signal on O (|O| = 24)
beta = bsp(f)                 # shape (4, 172), complex64
f_rec = bsp.invert(beta)      # reconstructed up to group action

License

MIT

Metadata

Release files for bispectrum 0.3.7

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for bispectrum 0.3.7
File Size Uploaded
bispectrum-0.3.7.tar.gz 50.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for bispectrum 0.3.7
File Interpreter ABI Platform
bispectrum-0.3.7-py3-none-any.whl Python 3 none any Details

Total release size: 107.6 kB

Release files / bispectrum-0.3.7.tar.gz

Download URL bispectrum-0.3.7.tar.gz
Size 50.7 kB
Tags Source
SHA-256 checksum
How to use checksums
8363b3e5265b2e8ab7723178a246b5c325d26fa86c8c15c925fdf3d754d2d199
BLAKE2b-256 checksum
How to use checksums
f436bdb7c66649294ba5ac3dac3026cd586dc0e686c809162b7e45c2732fd0bb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 14, 2026.

Transparency log

Release files / bispectrum-0.3.7-py3-none-any.whl

Download URL bispectrum-0.3.7-py3-none-any.whl
Size 56.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9ca0250b2615d931a4beecf763992115040b42d4ebed63e4292b8b7aa1fa17af
BLAKE2b-256 checksum
How to use checksums
57a3f895063b7eb2b4a625ce3a3e06e8cc69951c907b9f33877fbabfdcd960b5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 14, 2026.

Transparency log

Release history Release notifications | RSS feed

0.4.0

2 release files

This release

0.3.7 This release

2 release files

0.3.6

2 release files

0.3.5

2 release files

0.3.2

2 release files

0.3.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page