eradiate.scenes.spectra.InterpolatedSpectrum#

class eradiate.scenes.spectra.InterpolatedSpectrum(id=None, quantity='dimensionless', *, wavelengths, values)[source]#

Bases: eradiate.scenes.spectra._core.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, default: None) – User-defined object identifier.

  • quantity (PhysicalQuantity or str, default: dimensionless) – Physical quantity which the spectrum represents. The specified quantity must be one which varies with wavelength. See PhysicalQuantity.spectrum() for allowed values.

    Child classes should implement value units validation and conversion based on quantity.

  • wavelengths (quantity) – Wavelengths defining the interpolation grid.

  • 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
  • id (str or None) – User-defined object identifier.

  • 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 specialised 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.

eval_ckd(*bindexes)[source]#

Evaluate spectrum in CKD modes.

Parameters

*bindexes (Bindex) – One or several CKD bindexes for which to evaluate the spectrum.

Returns

value (quantity) – Evaluated spectrum as an array with shape (len(bindexes),).

eval_mono(w)[source]#

Evaluate spectrum in monochromatic modes.

Parameters

w (quantity) – Wavelength values at which the spectrum is to be evaluated.

Returns

value (quantity) – Evaluated spectrum as an array with the same shape as w.

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 or PhysicalQuantity, optional) – If set, quantity represented by the spectrum. This parameter and spectrum units must be consistent. This parameter takes precedence over the quantity field of the data array.

  • dataarray (DataArray) – An xarray.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 (see PhysicalQuantity.spectrum() for allowed values), optional.

    • units (str): units of spectrum values (must be consistent with quantity).

integral(wmin, wmax)[source]#

Compute the integral of the spectrum on a given interval.

Parameters
  • wmin (quantity) – Integration interval’s lower bound.

  • wmax (quantity) – Integration interval’s upper bound.

Returns

value (quantity) – Computed integral value.

kernel_dict(ctx)[source]#

Return a dictionary suitable for kernel scene configuration.

Parameters

ctx (KernelDictContext) – A context data structure containing parameters relevant for kernel dictionary generation.

Returns

KernelDict – Kernel dictionary which can be loaded as a Mitsuba object.