eradiate.scenes.spectra.InterpolatedSpectrum#
- class eradiate.scenes.spectra.InterpolatedSpectrum(id=None, quantity='dimensionless', *, wavelengths, values)[source]#
Bases:
Spectrum
Linearly interpolated spectrum [
interpolated
].Class method constructors
from_dataarray
([id, quantity])Construct an interpolated spectrum from an xarray data array.
- Parameters:
id (
str
, optional) – Identifier of the current scene element.quantity (
PhysicalQuantity
orstr
, default:dimensionless
) – Physical quantity which the spectrum represents. The specified quantity must be one which varies with wavelength. SeePhysicalQuantity.spectrum()
for allowed values.Child classes should implement value units validation and conversion based on
quantity
.wavelengths (
quantity
) – Wavelengths defining the interpolation grid. Values must be monotonically increasing.values (array-like) – Uniform spectrum value. If a float is passed, it is automatically converted to appropriate default configuration units. If a
Quantity
is passed, units are checked for consistency.
- Fields:
quantity (
PhysicalQuantity
) – Physical quantity which the spectrum represents.wavelengths (
quantity
) – Wavelengths defining the interpolation grid.values (
quantity
) – Uniform spectrum value.
Notes
Interpolation uses
numpy.interp()
. Evaluation is as follows:in
mono_*
modes, the spectrum is evaluated at the spectral context wavelength;in
ckd_*
modes, the spectrum is evaluated as the average value over the spectral context bin (the integral is computed using a trapezoid rule).
- eval(spectral_ctx)#
Evaluate spectrum based on a spectral context. This method dispatches evaluation to specialized methods depending on the active mode.
- Parameters:
spectral_ctx (
SpectralContext
) – A spectral context data structure containing relevant spectral parameters (e.g. wavelength in monochromatic mode, bin and quadrature point index in CKD mode).- Returns:
value (
quantity
) – Evaluated spectrum as a scalar.
- classmethod from_dataarray(id=None, quantity=None, *, dataarray)[source]#
Construct an interpolated spectrum from an xarray data array.
- Parameters:
id (
str
, optional) – Optional object identifier.quantity (
str
orPhysicalQuantity
, optional) – If set, quantity represented by the spectrum. This parameter and spectrum units must be consistent. This parameter takes precedence over thequantity
field of the data array.dataarray (
DataArray
) – Anxarray.DataArray
instance complying to the spectrum data array format (see Notes).
Notes
Expected data format:
Coordinates (* means also dimension)
*w
(float): wavelength in nm.
Metadata
quantity
(str): physical quantity which the data describes (seePhysicalQuantity.spectrum()
for allowed values), optional.units
(str): units of spectrum values (must be consistent withquantity
).
- traverse(callback)#
Traverse this scene element and collect kernel dictionary template and parameter update map contributions.
- Parameters:
callback (
SceneTraversal
) – Callback data structure storing the collected data.
- update()[source]#
Enforce internal state consistency. This method should be called when fields are modified. It is automatically called as a post-init step.
- property objects#
Map of child objects associated with this scene element.
- Returns:
dict
– A dictionary mapping object names to a corresponding object to be inserted in the Eradiate scene graph.
- property params#
- Returns:
dict[str
,UpdateParameter
] orNone
– A dictionary mapping parameter paths, consisting of dot-separated strings, to a corresponding update protocol.
See also
- property template#
Kernel dictionary template contents associated with this scene element.
- Returns:
dict
– A flat dictionary mapping dot-separated strings describing the path of an item in the nested scene dictionary to values. Values may be objects which can be directly used by themitsuba.load_dict()
function, orInitParameter
instances which must be rendered.
See also