OptikaInstrument#

class ctis.instruments.OptikaInstrument(system, coordinates_scene, channel, axis_channel, axis_wavelength, axis_scene_xy)[source]#

Bases: AbstractLinearInstrument

A CTIS instrument whose forward model is an optika AbstractLinearSystem.

The optika system supplies the distortion, effective area, and vignetting; this class adapts its regridding forward model to the AbstractLinearInstrument interface and adds the transpose (backproject()) used during inversion. The system may be channel-aware: its component models can vary along axis_channel to represent the different CTIS projections.

Attributes

axis_channel

The logical axis or axes of system corresponding to the different CTIS channels.

axis_scene_xy

The logical axes of coordinates_scene corresponding to changing position coordinate.

axis_sensor_xy

The logical axes of coordinates_sensor corresponding to changing position coordinate.

axis_wavelength

The logical axis of coordinates_scene corresponding to changing wavelength coordinate.

channel

Human-readable name of each independent CTIS channel.

coordinates_scene

A grid of wavelength and position coordinates on the skyplane which will be used to construct the inverted scene.

coordinates_sensor

A grid of wavelength and position coordinates on the detector plane.

num_channel

The total number of dispersion magnitudes/angles observed by this instrument.

system

A optika representation of a linear optical system.

weights

The contribution of each voxel on the skyplane to each pixel on the detector.

weights_transpose

The contribution of each pixel on the detector to each voxel on the skyplane.

Methods

__init__(system, coordinates_scene, channel, ...)

backproject(image[, integrate, unit])

The backward model of this CTIS instrument, which maps photons measured by the sensor to spectral radiance on the skyplane.

image(scene[, integrate, noise, uncertainty])

The forward model of this CTIS instrument, which maps spectral radiance on the skyplane to the electrons measured by the instrument's sensor.

Inheritance Diagram

Inheritance diagram of ctis.instruments.OptikaInstrument
Parameters:
backproject(image, integrate=True, unit=None)[source]#

The backward model of this CTIS instrument, which maps photons measured by the sensor to spectral radiance on the skyplane.

This is the complementary operation to image(), but it is not an inverse of image(), this method will spread out the photons from each pixel evenly across the voxels in the scene that could have contributed to the measured signal.

Parameters:
  • image (AbstractScalar | AbstractFunctionArray) – A series of images captured by a CTIS instrument, evaluated on coordinates_sensor, in units of photons.

  • integrate (bool) – Complement of the integrate keyword of image().

  • unit (None | UnitBase) – The unit of the backprojected spectral radiance. The forward model, image(), accepts a scene in either photon or energy units, so the backprojection is expressed in whichever the caller requests, converting between photon and energy units using the energy per photon. If None (the default), the radiance is left in the natural units of the backprojection and is not converted.

Return type:

FunctionArray[SpectralPositionalVectorArray, AbstractScalar]

image(scene, integrate=True, noise=True, uncertainty=False)[source]#

The forward model of this CTIS instrument, which maps spectral radiance on the skyplane to the electrons measured by the instrument’s sensor.

Parameters:
  • scene (AbstractScalar | AbstractFunctionArray) – The spectral radiance of an observed scene, evaluated on coordinates_scene, in units equivalent to \(\text{erg} \, \text{cm}^{-2} \, \text{sr}^{-1} \, \AA^{-1} \, \text{s}^{-1}\).

  • integrate (bool) – Whether to integrate along the wavelength axis. A real CTIS instrument integrates along wavelength, but sometimes it’s useful to keep the wavelengths separate for demonstration purposes.

  • noise (bool) – Whether to include the effect of noise in the final image.

  • uncertainty (bool) – Whether to attach the standard deviation of the measurement noise to the result, as a NormalUncertainScalarArray. The variance is computed for each wavelength before the integration along the wavelength axis and summed in quadrature, so it is exact even for the integrated image.

Return type:

FunctionArray[SpectralPositionalVectorArray, AbstractScalar]

axis_channel: str | tuple[str, ...] = <dataclasses._MISSING_TYPE object>#

The logical axis or axes of system corresponding to the different CTIS channels.

axis_scene_xy: tuple[str, str] = <dataclasses._MISSING_TYPE object>#

The logical axes of coordinates_scene corresponding to changing position coordinate.

property axis_sensor_xy: tuple[str, str]#

The logical axes of coordinates_sensor corresponding to changing position coordinate.

axis_wavelength: str = <dataclasses._MISSING_TYPE object>#

The logical axis of coordinates_scene corresponding to changing wavelength coordinate.

channel: str | AbstractScalar = <dataclasses._MISSING_TYPE object>#

Human-readable name of each independent CTIS channel.

coordinates_scene: AbstractSpectralPositionalVectorArray = <dataclasses._MISSING_TYPE object>#

A grid of wavelength and position coordinates on the skyplane which will be used to construct the inverted scene.

Normally the pitch of this grid is chosen to be the average plate scale of the instrument.

property coordinates_sensor: AbstractSpectralPositionalVectorArray#

A grid of wavelength and position coordinates on the detector plane.

property num_channel: int#

The total number of dispersion magnitudes/angles observed by this instrument.

system: AbstractLinearSystem = <dataclasses._MISSING_TYPE object>#

A optika representation of a linear optical system.

property weights: tuple[AbstractScalar, dict[str, int], dict[str, int]]#

The contribution of each voxel on the skyplane to each pixel on the detector.

property weights_transpose: tuple[AbstractScalar, dict[str, int], dict[str, int]]#

The contribution of each pixel on the detector to each voxel on the skyplane.