IdealInstrument#

class ctis.instruments.IdealInstrument(area_effective, timedelta_exposure, plate_scale, dispersion, angle, wavelength_ref, position_ref, coordinates_scene, coordinates_sensor, channel, axis_channel, axis_wavelength, axis_scene_xy, axis_sensor_xy)[source]#

Bases: AbstractLinearInstrument

An idealized CTIS instrument model.

This ideal instrument is characterized by an effective area, exposure time, plate scale and dispersion magnitude/angle.

It has no point-spread function, distortion, or vignetting, and it considers only photon shot noise.

Attributes

axis_channel

The logical axis or axes of this instrument corresponding to the different dispersion magnitudes and angles.

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 and coordinates_sensor that corresponds 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 sensor plane.

num_channel

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

uncertainty

A function that returns the standard deviation of the uncertainty for a given number of photons.

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.

area_effective

The effective area of the instrument aperture in units equivalent to \(\text{cm}^2\).

timedelta_exposure

The exposure time of the instrument in units equivalent to \(\text{s}\).

plate_scale

The spatial scale of the image on the sensor in units equivalent to \(\text{arcsec} \,\text{pix}^-1\)

dispersion

The magnitude of the spectral dispersion in units equivalent to \(\text{m \AA} \,\text{pix}^-1\).

angle

The angle of the dispersion direction with respect to the scene.

wavelength_ref

The reference wavelength at which the center of the FOV lands at position_ref

position_ref

The position on the sensor where center of the FOV lands at the reference wavelength.

Methods

__init__(area_effective, timedelta_exposure, ...)

backproject(image[, integrate])

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

distortion(coordinates)

A linear mapping between skyplane coordinates and sensor coordinates.

image(scene[, integrate, noise])

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

Inheritance Diagram

Inheritance diagram of ctis.instruments.IdealInstrument
Parameters:
backproject(image, integrate=True)[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:
Return type:

FunctionArray[SpectralPositionalVectorArray, AbstractScalar]

distortion(coordinates)[source]#

A linear mapping between skyplane coordinates and sensor coordinates.

Parameters:

coordinates (SpectralPositionalVectorArray) – Grid of spatial/spectral coordinates on the skyplane.

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

The forward model of this CTIS instrument, which maps spectral radiance on the skyplane to photons 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.

Return type:

FunctionArray[SpectralPositionalVectorArray, AbstractScalar]

angle: Quantity | AbstractScalar#

The angle of the dispersion direction with respect to the scene.

area_effective: Quantity | AbstractScalar#

The effective area of the instrument aperture in units equivalent to \(\text{cm}^2\).

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

The logical axis or axes of this instrument corresponding to the different dispersion magnitudes and angles.

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

The logical axes of coordinates_scene corresponding to changing position coordinate.

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

The logical axes of coordinates_sensor corresponding to changing position coordinate.

axis_wavelength: str = <dataclasses._MISSING_TYPE object>#

The logical axis of coordinates_scene and coordinates_sensor that corresponds 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.

coordinates_sensor: AbstractSpectralPositionalVectorArray = <dataclasses._MISSING_TYPE object>#

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

dispersion: Quantity | AbstractScalar#

The magnitude of the spectral dispersion in units equivalent to \(\text{m \AA} \,\text{pix}^-1\).

property num_channel: int#

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

plate_scale: Quantity | AbstractScalar | Cartesian2dVectorArray#

The spatial scale of the image on the sensor in units equivalent to \(\text{arcsec} \,\text{pix}^-1\)

position_ref: Quantity | AbstractScalar | Cartesian2dVectorArray#

The position on the sensor where center of the FOV lands at the reference wavelength.

timedelta_exposure: Quantity | AbstractScalar#

The exposure time of the instrument in units equivalent to \(\text{s}\).

property uncertainty: Callable[[ScalarArray], ScalarArray]#

A function that returns the standard deviation of the uncertainty for a given number of photons.

wavelength_ref: Quantity | AbstractScalar#

The reference wavelength at which the center of the FOV lands at position_ref

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#

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