Source code for rubix.telescope.base

import equinox as eqx
import numpy as np
from beartype import beartype as typechecker
from beartype.typing import List, Optional, Union
from jaxtyping import Array, Float, Int, jaxtyped


[docs] @jaxtyped(typechecker=typechecker) class BaseTelescope(eqx.Module): """ Base class for the telescope module. Attributes: fov (Union[float, int]): Field of view of the telescope. spatial_res (Union[float, int]): Spatial resolution of the telescope. wave_range (List[float]): Wavelength range (lower, upper). wave_res (Union[float, int]): Wavelength resolution. lsf_fwhm (Union[float, int]): Line-spread-function FWHM. signal_to_noise (Optional[float]): Target signal-to-noise ratio. sbin (np.int64): Spatial binning size (integer). aperture_region (Union[Float[Array, '...'], Int[Array, '...']]): Aperture array. pixel_type (str): Pixel geometry/type string. wave_seq (Float[Array, '...']): Wavelength sequence array. wave_edges (Float[Array, '...']): Wavelength edges array. """ fov: Union[float, int] spatial_res: Union[float, int] wave_range: List[float] # upper and lower limits wave_res: Union[float, int] lsf_fwhm: Union[float, int] signal_to_noise: Optional[float] sbin: np.int64 aperture_region: Union[Float[Array, "..."], Int[Array, "..."]] pixel_type: str wave_seq: Float[Array, "..."] wave_edges: Float[Array, "..."]