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 76 — 0.22 —
SO3onS2 SO(3) L=16 426 — 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.4.0

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.4.0
File Size Uploaded
bispectrum-0.4.0.tar.gz 54.0 kB Details

Built distribution (wheel)

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

Total release size: 114.1 kB

Release files / bispectrum-0.4.0.tar.gz

Download URL bispectrum-0.4.0.tar.gz
Size 54.0 kB
Tags Source
SHA-256 checksum
How to use checksums
438636b82c2cb13d66f4bfe6a649fbde2e7aa48a4852a88a836267d5831654d7
BLAKE2b-256 checksum
How to use checksums
4e5b7bbaed82a8025c0c6884099ab7476530e88c8051573a8a545cc828e141a6
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.4.0-py3-none-any.whl

Download URL bispectrum-0.4.0-py3-none-any.whl
Size 60.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
712865a23ae05bb00961731cb06a97db0e01befc42327edc7c81f4e3eb7cffd2
BLAKE2b-256 checksum
How to use checksums
b35d9c9f65664dbeb7a4eac37cd53cbed1d95ec7d7e6429b9c68167d8f12ba2d
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

This release

0.4.0 This release

2 release files

0.3.7

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