Lifting#

The lift of spin fields to the rotation group and its adjoint projection (Sec. IV).

For spin \(s\) the isometric lift \(\Lambda_s\) and its adjoint, the projection \(\Lambda_s^\dagger\), are (Definition IV.6)

\[(\Lambda_s f)(\alpha, \beta, \gamma) = \frac{1}{\sqrt{2\pi}} e^{-\mathrm{i}s\gamma} f(\beta, \alpha), \qquad (\Lambda_s^\dagger F)(\beta, \alpha) = \frac{1}{\sqrt{2\pi}} \int_0^{2\pi} e^{\mathrm{i}s\gamma} F(\alpha, \beta, \gamma)\, \mathrm{d}\gamma .\]

In harmonic space the lift fills the single Wigner column \(n = -s\) and the projection reads it (Lemma IV.7(c), Eq. 38):

\[(\Lambda_s f)^{\ell}_{mn} = (-1)^s \sqrt{\tfrac{8\pi^2}{2\ell+1}}\, {}_sf_{\ell m}\, \delta_{n,-s}, \qquad (\Lambda_s^\dagger F)_{\ell m} = (-1)^s \sqrt{\tfrac{2\ell+1}{8\pi^2}}\, F^{\ell}_{m,-s} .\]

Evaluation on a section, which differs from the adjoint by \(\sqrt{2\pi}\), is a separate operator (s2conv.convolutions.section).

s2conv.lifting.lift(flm, spin: int, N: int = None) → Array[source]#

The lift \(\Lambda_s\) in harmonic space (Lemma IV.7(c)).

Parameters:
  • flm – Spin-\(s\) harmonic coefficients with shape [..., L, 2L - 1].

  • spin (int) – Spin \(s\).

  • N (int, optional) – Azimuthal band-limit of the output, at least \(|s| + 1\). Defaults to \(|s| + 1\).

Returns:

Wigner coefficients with shape [..., 2N - 1, L, 2L - 1], supported on the column \(n = -s\).

Return type:

jnp.ndarray

s2conv.lifting.project(flmn, spin: int) → Array[source]#

The adjoint projection \(\Lambda_s^\dagger\) in harmonic space (Lemma IV.7(c)).

Parameters:
  • flmn – Wigner coefficients with shape [..., 2N - 1, L, 2L - 1].

  • spin (int) – Spin \(s\) of the output.

Returns:

Spin-\(s\) harmonic coefficients with shape [..., L, 2L - 1], zero when \(|s| \ge N\).

Return type:

jnp.ndarray

s2conv.lifting.spin_components(flmn) → Array[source]#

Decompose a function on the rotation group into spin fields (Corollary IV.12).

Every \(F\) azimuthally band-limited at \(N\) is \(F = \sum_{|s| < N} \Lambda_s \Lambda_s^\dagger F\), a tuple of \(2N - 1\) spin fields.

Parameters:

flmn – Wigner coefficients with shape [..., 2N - 1, L, 2L - 1].

Returns:

Spin harmonic coefficients \(\Lambda_s^\dagger F\) with shape [..., 2N - 1, L, 2L - 1], indexed [..., N - 1 + s, el, L - 1 + m].

Return type:

jnp.ndarray

s2conv.lifting.from_spin_components(components) → Array[source]#

Assemble a function on the rotation group from its spin fields (Corollary IV.12).

Parameters:

components – Spin harmonic coefficients with shape [..., 2N - 1, L, 2L - 1], indexed [..., N - 1 + s, el, L - 1 + m].

Returns:

Wigner coefficients \(\sum_{|s|<N} \Lambda_s f_s\) with shape [..., 2N - 1, L, 2L - 1].

Return type:

jnp.ndarray

s2conv.lifting.gamma_samples(N: int) → ndarray[source]#

Samples of the third Euler angle used by s2fft, \(\gamma_j = 2\pi j/(2N-1)\).

Parameters:

N (int) – Azimuthal band-limit.

Returns:

The \(2N - 1\) angles.

Return type:

np.ndarray

s2conv.lifting.lift_samples(f, spin: int, N: int = None) → Array[source]#

The lift \(\Lambda_s\) on samples (Eq. 37).

Parameters:
  • f – Samples of a spin-\(s\) field on the sphere, of any sampling scheme.

  • spin (int) – Spin \(s\).

  • N (int, optional) – Azimuthal band-limit of the output samples. Defaults to \(|s| + 1\).

Returns:

Samples on the rotation group with shape [2N - 1, *f.shape].

Return type:

jnp.ndarray

s2conv.lifting.project_samples(F, spin: int) → Array[source]#

The adjoint projection \(\Lambda_s^\dagger\) on samples (Eq. 37).

The integral over the fibre is evaluated by the trapezoidal rule, which is exact for samples azimuthally band-limited at \(N > |s|\).

Parameters:
  • F – Samples on the rotation group with shape [2N - 1, ...].

  • spin (int) – Spin \(s\) of the output.

Returns:

Samples of the spin-\(s\) field on the sphere.

Return type:

jnp.ndarray