SYNTOLOGY HomeExplorerAtlasCodeMethodologyAboutDevelopersFeedPricing
Paper · 2605.07270 · 2026

bispectrum: Selective G-Bispectra Made Practical

Nina Miolane, Johan Mathe, Adele Myers Lantow, Simon Mataigne

arXiv · PDF · Open in the Atlas

Code that ran

We lifted 10 functions out of this paper's own repositories and ran 4 of them in a sandbox. "Ran" means the function executed on a synthesized input and returned a value. It is not a reproduction of the paper's results.

RepositoryRoleRan
geometric-intelligence/bispectrum canonical 4 of 10
FunctionStatusWhere it lives
bessel_jn Ran geometric-intelligence/bispectrum/src/bispectrum/_bessel.py
code served (permissive licence) · get_code("4571fb37042d0479")
cartesian_to_spherical Ran geometric-intelligence/bispectrum/src/bispectrum/rotation.py
code served (permissive licence) · get_code("b806d5820c24e96a")
recovery_error_up_to_group_action Ran geometric-intelligence/bispectrum/benchmarks/bench_inversion.py
code served (permissive licence) · get_code("6920e14981bda100")
spherical_to_cartesian Ran geometric-intelligence/bispectrum/src/bispectrum/rotation.py
code served (permissive licence) · get_code("ea6da5d8731205b0")
bessel_jn_zeros Not yet run geometric-intelligence/bispectrum/src/bispectrum/_bessel.py
code served (permissive licence) · get_code("dcdb4515b1b53110")
clebsch_gordan Not yet run geometric-intelligence/bispectrum/src/bispectrum/_cg.py
code served (permissive licence) · get_code("4721d6766dfd94bd")
compute_all_bessel_roots Not yet run geometric-intelligence/bispectrum/src/bispectrum/_bessel.py
code served (permissive licence) · get_code("8fc0a9c4e919f2c2")
compute_cg_matrix Not yet run geometric-intelligence/bispectrum/src/bispectrum/_cg.py
code served (permissive licence) · get_code("0a913c17417cb19c")
random_rotation_matrix Not yet run geometric-intelligence/bispectrum/src/bispectrum/rotation.py
code served (permissive licence) · get_code("d0cef85b1cc80ce2")
wigner3j Not yet run geometric-intelligence/bispectrum/src/bispectrum/_cg.py
code served (permissive licence) · get_code("68ca94715d91f00e")

Repositories linked to this paper

Some links come from the archived Papers with Code dataset (CC BY-SA 4.0): attribution and licence.

Abstract

Many machine learning tasks are invariant under the action of a group G of transformations: signal classification can be invariant under translations, image classification under 2D rotations, and spherical-image classification under 3D rotations. The G-bispectrum is a principled complete invariant of a signal (retaining all all signal's information up to the group action) with proven benefits in machine learning and as a pooling layer in deep networks. However, its deployment has been hampered by high computational cost and a patchwork of group-specific implementations. We present bispectrum, an open-source, fully unit-tested PyTorch library that implements selective G-bispectra for seven different group actions, as differentiable modules that can be directly incorporated into machine learning pipelines and deep learning architectures. For finite groups G, selectivity reduces the computational cost from O(|G| 2 ) to O(|G|). For planar rotations, we leverage the disk bispectrum. For spherical 3D rotations, we introduce an augmented selective bispectrum at band-limit L which reduces the cost from O(L 3 ) to Θ(L 2 ) coefficients. We profile the entire library (for which we implemented various compute optimizations), showing that it delivers near-exact G-invariance with its selective G-bispectra computed in sub-millisecond time on GPU (up to commonly used bandlimits). We evaluate the benefits of incorporating G-bispectra as pooling layers into deep learning architectures on three classical benchmark datasets -comparing against norm pooling, gated pooling, Fourier-ELU pooling, max pooling, and (non-equivariant) dataaugmented convolutional baselines. Results show that G-bispectra consistently outperform alternatives in the low-data, moderate-capacity regime. Code is available at https://github.com/geometric-intelligence/bispectrum/.

For agents

The same record, over MCP at https://syntology.ai/mcp:

get_harvested_code_for_paper("2605.07270")
get_code_for_paper("2605.07270")
have("2605.07270")

Connect an agent — have() is free.