fouriax.IncoherentImager#

class IncoherentImager(optical_layer, propagator, input_distance_um=None, output_distance_um=None, calibration_source='impulse', normalize_psf=True, enforce_nonnegative_psf=True, mode='auto', normalization_reference='near_wavelength', normalization_reference_distance_um=None)#

Bases: IncoherentLayer

Incoherent shift-invariant imager built from coherent optics.

Parameters:
  • optical_layer (OpticalLayer)

  • propagator (OpticalLayer)

  • input_distance_um (float | None)

  • output_distance_um (float | None)

  • calibration_source (Literal['impulse', 'plane_wave_focus', 'point_source'])

  • normalize_psf (bool)

  • enforce_nonnegative_psf (bool)

  • mode (Literal['psf', 'otf', 'auto'])

  • normalization_reference (Literal['near_1um', 'near_wavelength', 'at_imaging_distance'])

  • normalization_reference_distance_um (float | None)

__init__(optical_layer, propagator, input_distance_um=None, output_distance_um=None, calibration_source='impulse', normalize_psf=True, enforce_nonnegative_psf=True, mode='auto', normalization_reference='near_wavelength', normalization_reference_distance_um=None)#
Parameters:
  • optical_layer (OpticalLayer)

  • propagator (OpticalLayer)

  • input_distance_um (float | None)

  • output_distance_um (float | None)

  • calibration_source (Literal['impulse', 'plane_wave_focus', 'point_source'])

  • normalize_psf (bool)

  • enforce_nonnegative_psf (bool)

  • mode (Literal['psf', 'otf', 'auto'])

  • normalization_reference (Literal['near_1um', 'near_wavelength', 'at_imaging_distance'])

  • normalization_reference_distance_um (float | None)

Return type:

None

Methods

__init__(optical_layer, propagator[, ...])

build_psf(field)

for_far_field(*, optical_layer, propagator, ...)

for_finite_distance(*, optical_layer, ...[, ...])

forward(intensity)

Apply this layer's transformation to intensity.

linear_operator(template, *[, cache, ...])

normalization_distance_um(intensity)

parameters()

Return trainable or configurable layer parameters.

validate_for(intensity)

Check that intensity is compatible with this layer.

Attributes

optical_layer: OpticalLayer#
propagator: OpticalLayer#
input_distance_um: float | None = None#
output_distance_um: float | None = None#
calibration_source: Literal['impulse', 'plane_wave_focus', 'point_source'] = 'impulse'#
normalize_psf: bool = True#
enforce_nonnegative_psf: bool = True#
mode: Literal['psf', 'otf', 'auto'] = 'auto'#
normalization_reference: Literal['near_1um', 'near_wavelength', 'at_imaging_distance'] = 'near_wavelength'#
normalization_reference_distance_um: float | None = None#
classmethod for_far_field(*, optical_layer, propagator, output_distance_um, normalize_psf=True, enforce_nonnegative_psf=True, mode='auto', normalization_reference='near_wavelength', normalization_reference_distance_um=None)#
Parameters:
  • optical_layer (OpticalLayer)

  • propagator (OpticalLayer)

  • output_distance_um (float)

  • normalize_psf (bool)

  • enforce_nonnegative_psf (bool)

  • mode (Literal['psf', 'otf', 'auto'])

  • normalization_reference (Literal['near_1um', 'near_wavelength', 'at_imaging_distance'])

  • normalization_reference_distance_um (float | None)

Return type:

IncoherentImager

classmethod for_finite_distance(*, optical_layer, propagator, input_distance_um, output_distance_um, normalize_psf=True, enforce_nonnegative_psf=True, mode='auto', normalization_reference='near_wavelength', normalization_reference_distance_um=None)#
Parameters:
  • optical_layer (OpticalLayer)

  • propagator (OpticalLayer)

  • input_distance_um (float)

  • output_distance_um (float)

  • normalize_psf (bool)

  • enforce_nonnegative_psf (bool)

  • mode (Literal['psf', 'otf', 'auto'])

  • normalization_reference (Literal['near_1um', 'near_wavelength', 'at_imaging_distance'])

  • normalization_reference_distance_um (float | None)

Return type:

IncoherentImager

normalization_distance_um(intensity)#
Parameters:

intensity (Intensity)

Return type:

float

build_psf(field)#
Parameters:

field (Field)

Return type:

Intensity

forward(intensity)#

Apply this layer’s transformation to intensity.

Parameters:

intensity (Intensity)

Return type:

Intensity

linear_operator(template, *, cache='auto', flatten=False, conv_grid=None)#
Parameters:
  • template (Intensity)

  • cache (Literal['psf', 'otf', 'auto'])

  • flatten (bool)

  • conv_grid (Grid | None)

Return type:

LinearOperator

parameters()#

Return trainable or configurable layer parameters.

Return type:

dict[str, Array]