optixstuff.disperser#
Disperser hardware descriptors for integral field spectrographs.
optixstuff owns the descriptor: the interface plus a cheap closed-form scalar/ETC face. The heavy render logic (building the forward operator) lives in coronachrome. This mirrors the coronagraph split, so jaxedith and yield tools can read IFS hardware info without importing the render engine.
Classes#
Interface for a dispersing IFS element (lenslet array, slicer, MSA). |
|
Lenslet-array IFS disperser (CRISPY heritage). |
Functions#
|
Evaluate the derivative of a descending-order polynomial at x. |
Module Contents#
- class optixstuff.disperser.AbstractDisperser[source]#
Bases:
equinox.ModuleInterface for a dispersing IFS element (lenslet array, slicer, MSA).
Only the scalar/ETC face is defined here. Render geometry lives in coronachrome and dispatches on the concrete descriptor type.
- abstractmethod spectral_resolution(wavelength_nm)[source]#
Resolving power R = lambda / dlambda at the given wavelength.
- optixstuff.disperser._polyval_deriv(coeffs, x)[source]#
Evaluate the derivative of a descending-order polynomial at x.
- class optixstuff.disperser.LensletDisperser[source]#
Bases:
AbstractDisperserLenslet-array IFS disperser (CRISPY heritage).
Config only. The render geometry (IR build) is performed by coronachrome, which reads these fields. Scalar/ETC methods derive from
dispersion_coeffs+pix_per_reseltso the dispersion model is the single source of truth.psflet_params[0]is the PSFlet core width in detector pixels (Gaussiansigmaor Moffatalpha); any trailing entries are dimensionless shape parameters (e.g. Moffatbeta).psflet_ref_nmis the wavelength at which that core width is specified: a diffraction-limited spot scales aslambda f / D, so at fixed pixel scale coronachrome scales the core width bylambda / psflet_ref_nmper wavelength (the shape parameters do not scale).sky_pitch_arcsecis the lenslet pitch projected on sky, a plain angle in arcseconds (the focal-plane cube a render layer consumes lives on a fixed angular grid, so no reference wavelength is involved). It makes the spatial sampling an instrument property: the render layer derives focal-plane pixels per lenslet as the ratio of this pitch to the cube’s angular plate scale instead of taking a free knob.Nonemeans unspecified.psflet_pack_pathis a reference to a frozen PSFlet template pack file (used withpsflet_kind="template"), the waythroughput_elementcarries the blaze curve: config only, the render layer loads it.- throughput_element: optixstuff.optical_elements.AbstractOpticalElement#
- spectral_resolution(wavelength_nm)[source]#
R = (local px per unit log-lambda) / pixels-per-resolution-element.
- n_pix_spread(wavelength_min_nm, wavelength_max_nm)[source]#
Spectral trace length [px] across a band, plus a PSFlet-width margin.
- throughput(wavelength_nm)[source]#
Disperser optical throughput in [0, 1], shaped like wavelength_nm.
Delegates to the composed throughput element (ConstantThroughput by default; SpectralThroughput for a tabulated blaze/transmission curve) and broadcasts to the wavelength shape so the output shape is canonical regardless of the backing element.