jax_sn.operators.transport_operator.transport_operator_strategies module

Strategy objects for the transport operator. Here, we have subtypes that compose from a inner single-angle strategy.

class ComposedMultiAngleForwardStrategy(inner: SingleAngleForwardStrategy)[source]

Bases: MultiAngleForwardStrategy

A multi-angle forward strategy that is a combinator over a single-angle strategy.

inner: SingleAngleForwardStrategy
single_angle_strategy()[source]

The single-angle SingleAngleForwardStrategy this angle lift corresponds to.

Return type:

SingleAngleForwardStrategy

class ComposedMultiAngleInversionStrategy(inner: SingleAngleInversionStrategy)[source]

Bases: MultiAngleInversionStrategy

A multi-angle inversion strategy that is a combinator over a single-angle strategy.

inner: SingleAngleInversionStrategy
single_angle_strategy()[source]

The single-angle SingleAngleInversionStrategy this angle inversion corresponds to (used for composited strategy, error if does not exist)

Return type:

SingleAngleInversionStrategy

required_capabilities()[source]

Sweep-data capability interfaces this strategy requires (e.g. (ProvidesLevels,)). Empty (the default) means any SweepData is acceptable.

Return type:

Tuple[type, ...]

build_default_sweep_data(geometric_domain, angle)[source]

The minimal sweep data this strategy needs, built for geometric_domain and angle (single or batched – dispatched on angle.ndim).

This builds rather than naming a type because a strategy may carry build-time knobs of its own (a level-padding width, say): those are properties of how this kernel sweeps, so they live as static fields on the strategy and are applied right here. Nothing upstream has to know they exist.

Return type:

SweepData

check_compatible(data: TransportData)[source]

Asserts whether the sweep data is compatible with this inversion strategy (just typing information).