The substrate
The math, end to end.
Every guarantee Vikshep makes is derived from one of six pieces of mathematics. Here they are.
§ 1 — The 1-D scattering transform
The cascade and its three guarantees.
The wavelet scattering transform is built from one mother wavelet — the analytic Morlet, a complex sinusoid windowed by a Gaussian and corrected to have zero mean. The correction term κ removes the DC component so that the filter is truly band-pass and the cascade remains energy-preserving.
1.1 — Morlet wavelet
ξ is the carrier frequency; σ controls the Gaussian envelope. Analytic: no negative-frequency content, so the modulus is a well-defined instantaneous amplitude.
The family is generated by dilation, giving J · Q band-pass filters logarithmically spaced in frequency plus a low-pass averaging kernel φ_J at scale 2^J. The scattering coefficients of orders 0, 1, and 2 are produced by a cascade of convolutions and moduli:
1.2 — Scattering coefficients S₀, S₁, S₂
The modulus |·| is the key non-linearity. It is 1-Lipschitz and breaks translation invariance of the intermediate representation in a controlled way — allowing finer-scale structure to propagate to S₂.
Energy decays geometrically with order, so we truncate at m = 2 and capture >99% of the signal energy. Three structural properties follow immediately from the architecture. Translation invariance holds at the scale of φ_J. Non-expansiveness follows because the cascade is built from a frame and the 1-Lipschitz modulus: ‖Sx − Sy‖ ≤ ‖x − y‖. The most important property is deformation stability — the Mallat bound:
1.3 — Mallat deformation stability bound
𝓛_τ is a diffeomorphic deformation of displacement field τ. ∇τ controls local stretching; ‖τ‖/2^J bounds large translations relative to the averaging scale; Hτ (Hessian) bounds bending. All three must be small — which they are for detector smearing and pile-up.
This is the property a physicist needs. Detector noise and small geometric warps produce only bounded changes in the representation. A learned feature extractor has no such guarantee — it may amplify or suppress any particular deformation pattern depending on what it saw during training.
Interactive — the cascade in action
§ 2 — From 1-D to n-D: orientation is not optional
Why a tensor product fails, and what to use instead.
The naive n-D extension is a separable wavelet ψ(u) = ∏_k ψ(u_k). It has no orientation selectivity. In a calorimeter image, orientation is the signal — a 30° energy streak must be distinguished from a 60° one. Separable wavelets treat both identically because they decompose along coordinate axes only.
The correct generalisation is the oriented Morlet wavelet bank. A mother wavelet is dilated and rotated to produce filters at J · Q · L orientations:
2.1 — Oriented Morlet family
R_{-θ} rotates u by angle −θ before passing it to ψ. The bank now has J·Q·L filters. The cascade and all three structural properties of §1 carry over verbatim with u replacing t.
2.2 — Parseval frame condition
The filters tile frequency space completely. No energy leaks out of the frame. This is what makes the scattering representation energy-preserving — a property that learned convolutional networks do not have in general.
Calorimeter geometry adds one subtlety. The azimuthal angle φ is genuinely periodic; the pseudorapidity η is not. FFT-based convolution is circular by default. The engine carries a per-axis pad policy: Circular for φ, ZeroPad (next power-of-two, halo discarded) for η. Using circular convolution on η contaminates the edge bins — a silent error that would not appear in unit tests checking only the bulk of the distribution.
Interactive — oriented Morlet filter bank
4×8 filter bank · 32 wavelets
The bank that the engine uses. Fixed analytic Morlets at log-spaced scales and uniformly-spaced orientations. Filters never change — that's the point.
§ 3 — Solid-harmonic wavelets and SO(3) covariance
Rotation invariance for 3-D fields, by construction.
For volumetric data — 3-D energy deposits, cosmological density fields, voxelised point clouds — oriented Morlet wavelets are insufficient because they are defined for 2-D images under SE(2). Three-dimensional rotation has a richer structure: SO(3). The natural basis for functions on the sphere is the spherical harmonics Y_ℓ^m, and solid-harmonic wavelets are built directly from them:
3.1 — Solid-harmonic wavelet family
ℓ is the angular frequency (order of spherical harmonic); m ∈ [−ℓ, ℓ] is the orientation. The |u|^ℓ factor makes the wavelet exactly harmonic. Dilation by 2^j produces a log-spaced scale family with J · (L_max + 1)² filters.
Under rotation g ∈ SO(3), spherical harmonics of fixed ℓ transform among themselves by the unitary Wigner-D matrix. This is the algebraic fact that makes solid-harmonic scattering covariant:
3.2 — Wigner-D rotation law
D^ℓ is the (2ℓ+1)×(2ℓ+1) Wigner-D representation matrix of g. The key property: D^ℓ is unitary, so the Frobenius norm — equivalently, the sum of |m|² — is rotation-invariant.
3.3 — SO(3)-invariant propagator
Because D^ℓ is unitary, the sum-of-squares over m is invariant to rotation of x. Spatial averaging φ_J then gives full SO(3)-invariance. Second-order coefficients capture bispectrum-like structure invisible to the power spectrum.
First-order invariants S[j, ℓ] encode power-spectrum-like information. Second-order invariants S[j₁, ℓ₁, j₂, ℓ₂] encode bispectrum-like, non-Gaussian structure — the regime where scattering measurably outperforms the power spectrum in cosmology (Cheng & Ménard, arXiv:2112.01288) and where boosted-jet substructure carries its discriminating power.
§ 4 — Lie group convolution
Invariance to a group = convolve over the group, then average over the orbit.
The unifying view of every invariance Vikshep provides: lift the signal to the group, convolve along the group, take a modulus, and average over the group orbit. The three cases — translation, roto-translation, and 3-D rotation — are instances of the same abstract construction over different groups G:
- G = ℝⁿ — translation only. The 1-D and 2-D separable cases.
- G = SE(2) = ℝ² ⋊ SO(2) — roto-translation. The oriented 2-D case.
- G = SO(3) — full 3-D rotation. The solid-harmonic case.
For SE(2): the first oriented layer already produces a field on the group. The second layer convolves jointly over space and orientation with a wavelet that has a θ-component, producing a representation on SE(2) × SE(2):
4.1 — First-layer output lives on SE(2)
The signal has been lifted from ℝ² to the group. This lifting is what allows the second layer to capture interactions between orientations at different scales — the cross-scale, cross-orientation structure that separable wavelets miss.
4.2 — SE(2) second-layer convolution
∗_{SE(2)} is convolution over the group (space × orientation jointly). Final low-pass averaging over space and orientation gives coefficients invariant to global roto-translation and stable to deformation.
A design decision: Standard jet-image preprocessing pre-centres the jet, rotates its principal axis to vertical, and flips it to canonical parity. If you also run roto-translation scattering, you are being invariant to a symmetry you already removed — wasted compute, and the redundant averaging can wash out discriminating information. Pick one: either skip the pre-rotation and let SE(2) scattering own the invariance (preferred — exact rather than heuristic), or keep the pre-rotation and use G = ℝ². Do not do both.
§ 5 — Steerable wavelets and GPU register economy
Why the SO(3) engine fits in a register file.
A filter is steerable if its rotation to any angle is a fixed linear combination of a small basis of K basis filters — independent of L, the total number of discrete orientations in the bank:
5.1 — Steerability definition
b_k(θ) are steering coefficients that depend only on the target angle; φ_k are fixed basis filters. For SO(3), the steering coefficients are Wigner-D matrix entries and the basis filters are the solid-harmonic wavelets of §3.
5.2 — Convolution via steerability
By linearity of convolution: compute K basis convolutions once; synthesize any orientation by a K-wide linear combination. No per-orientation FFT. The orientation axis becomes a K-wide GEMM fused into the modulus kernel.
This is a correctness-of-performance requirement, not an optimization. Brute force computes one convolution per orientation: O(L) separate FFT passes. At Dim=3, the per-thread working set blows the register file and spills to local memory, collapsing throughput by 4–8×. Steering turns the orientation axis into a K-wide GEMM fused into the modulus kernel — kept in registers within the tile policy (64×64 on Ampere, 128×128 on Hopper). It is the difference between a kernel that fits and a kernel that spills. The GPU performance characteristics of the two approaches are not competitive at Dim=3, L_max ≥ 2.
Interactive — deformation stability
x(t) — clean signal
x(t − τ(t)) — deformed ‖τ‖=0.15
Scattering coefficients Sx (dark) vs S(L_τ x) (warm) — overlaid
Vikshep's features change at most linearly with how badly your detector smeared the signal. Bad pile-up doesn't blow up your representation.
§ 6 — Eliminating mass sculpting
Ratios + a closed-form penalty.
Let ŷ be the tagger score and M the resonance mass. A selection ŷ > c keeps background events with mass-dependent efficiency ε(m):
6.1 — Mass-dependent efficiency
If ŷ is mass-independent, ε(m) = ε is a constant and the post-cut spectrum is proportional to the pre-cut spectrum — no sculpting. If ŷ depends on M, ε(m) varies with mass and reshapes the background.
6.2 — Post-cut background density
Sculpting = ε(m) non-constant. Any bump-hunt that assumes f^{cut}_{bkg} is smooth and ε-independent will attribute the sculpted feature to a signal peak. This is the failure mode.
Stage one — remove the mass scale. Drop S₀ and the lowest-j S₁ coefficients (they carry the energy/mass scale directly). Use the dimensionless ratio r₂ instead:
6.3 — The r₂ ratio
The scattering analogue of D₂ and τ₂₁. Scale-invariant by construction — it cannot carry an energy scale because both numerator and denominator scale identically with jet pT. Residual correlation through non-linear structure is handled by stage two.
Stage two — kill the residual with DisCo. For samples {X_i}, {Y_i} with weights w_i, the weighted distance covariance is:
6.4 — Weighted distance covariance
A, B are weighted-double-centred distance matrices. dCov²_w(X,Y) = 0 if and only if X and Y are statistically independent. No distributional assumptions. No kernel choice. Valid for arbitrary non-linear dependence.
6.5 — Training objective with DisCo
The penalty drives ŷ ⊥ M on background events. Once dCorr² = 0, ε(m) is constant and the spectrum is preserved exactly. λ controls the AUC–decorrelation tradeoff. The demo below shows this tradeoff live.
This is the closed-form guarantee. The penalty is not a heuristic post-processing step, not an adversarial training trick that might or might not converge, and not a planing procedure that requires re-optimisation of the cut. It is a single differentiable term in the loss function that provably drives the score distribution to be independent of mass on background — hence ε(m) constant — hence the background shape preserved by construction.
See it live on the home page
The Mass-Sculpting Killer interactive on the home page shows this tradeoff directly: toggle between the standard NN tagger and the Vikshep r₂ tagger, drag the DisCo penalty λ and the cut threshold c, and watch the background mass histogram respond.
Go to the interactive demo →Interactive — r₂ mass invariance
r₂ = S₂/S₁. r₂ is dimensionless — it can't carry an energy scale. It's the scattering analogue of D2, generalized to a full basis.
Interactive — BSM anomaly embedding
5/ 320
bkg flagged
55/ 80
signal flagged
1.6%
FPR
No signal model. The SM cloud is built from background-only events; anything beyond a calibrated SW₁ distance from the cloud is anomalous by construction.
References
Canonical sources.
Cite Vikshep
@software{vikshep_2026,
author = {Singh, Samvardhan and Mishra, Yash},
title = {Vikshep: A deterministic, deformation-stable
feature-extraction plane for scientific compute},
year = {2026},
url = {https://github.com/samvardhan03/Vikshep},
license = {Apache-2.0}
}