Source code for optika.systems._systems

from __future__ import annotations
from typing import Any
import abc
import dataclasses
import named_arrays as na
import optika

__all__ = [
    "AbstractSystem",
]


[docs] @dataclasses.dataclass(eq=False, repr=False) class AbstractSystem( optika.mixins.DxfWritable, optika.mixins.Plottable, optika.mixins.Printable, optika.mixins.Transformable, optika.mixins.Shaped, ): """ An interface describing an optical system. Could potentially be sequential or non-sequential. """
[docs] @abc.abstractmethod def image( self, scene: na.FunctionArray[na.SpectralPositionalVectorArray, na.AbstractScalar], **kwargs: Any, ) -> na.SpectralPositionalVectorArray: """ Forward model of the optical system. Maps the given spectral radiance of a scene to detector counts. Parameters ---------- scene The spectral radiance of the scene as a function of wavelength and field position. kwargs Additional keyword arguments used by subclass implementations of this method. """