Skip to content

Spectral

Spectral configuration classes that define wavelength grids, spectral regions, and sensor spectral response functions used during simulation.

s2gos_simulator.config.spectral.SpectralResponse pydantic-model

Bases: BaseModel

Spectral response function configuration.

Supports multiple SRF types:

  • delta: Discrete wavelength points → Eradiate's multi_delta
  • uniform: Wavelength range (wmin, wmax) → Eradiate's uniform
  • dataset: String ID for predefined SRFs → Eradiate's internal database
  • gaussian: Gaussian SRF with configurable FWHM (for hyperspectral instruments)

Gaussian SRF Example (CHIME-like): SpectralResponse( type="gaussian", spectral_regions=[ SpectralRegion(name="VNIR", wmin_nm=400, wmax_nm=1000, fwhm_nm=8.5), SpectralRegion(name="SWIR1", wmin_nm=1000, wmax_nm=1800, fwhm_nm=10.0), SpectralRegion(name="SWIR2", wmin_nm=1800, wmax_nm=2500, fwhm_nm=11.0), ], output_grid=WavelengthGrid(mode="regular", wmin_nm=400, wmax_nm=2500, step_nm=8.4), )

Fields:

Validators:

  • validate_wavelengthswavelengths
  • validate_srf_config

Attributes

dataset_id pydantic-field

dataset_id: Optional[str] = None

Dataset ID for predefined SRF

fwhm_nm pydantic-field

fwhm_nm: Optional[float] = None

Single FWHM for all wavelengths (nm). Use this OR spectral_regions.

output_grid pydantic-field

output_grid: Optional[WavelengthGrid] = None

Output wavelength grid configuration. Required for gaussian type.

spectral_regions pydantic-field

spectral_regions: Optional[List[SpectralRegion]] = None

Wavelength-dependent FWHM via spectral regions. Use this OR fwhm_nm.

type pydantic-field

type: Literal["delta", "uniform", "dataset", "gaussian"] = (
    "delta"
)

SRF type: 'delta', 'uniform', 'dataset', or 'gaussian'

wavelengths pydantic-field

wavelengths: Optional[List[float]] = None

Wavelengths in nm for delta SRF

wmax pydantic-field

wmax: Optional[float] = None

Maximum wavelength for uniform SRF

wmin pydantic-field

wmin: Optional[float] = None

Minimum wavelength for uniform SRF

Functions

get_fwhm_for_wavelength

get_fwhm_for_wavelength(wavelength_nm: float) -> float

Get FWHM for a given wavelength.

For single fwhm_nm: returns that value for all wavelengths. For spectral_regions: returns FWHM of the region containing the wavelength.

Parameters:

Name Type Description Default
wavelength_nm float

Wavelength in nanometers

required

Returns:

Type Description
float

FWHM in nanometers for that wavelength

s2gos_simulator.config.spectral.SpectralRegion pydantic-model

Bases: BaseModel

Define a spectral region with specific FWHM.

Used for wavelength-dependent Gaussian SRF where different spectral regions have different spectral resolution.

Example

SpectralRegion(name="VNIR", wmin_nm=400, wmax_nm=1000, fwhm_nm=8.5)

Fields:

Validators:

  • validate_range

Attributes

fwhm_nm pydantic-field

fwhm_nm: float

Full Width at Half Maximum (nm)

name pydantic-field

name: str

Region identifier (e.g., 'VNIR', 'SWIR1')

wmax_nm pydantic-field

wmax_nm: float

Maximum wavelength (nm)

wmin_nm pydantic-field

wmin_nm: float

Minimum wavelength (nm)

s2gos_simulator.config.spectral.WavelengthGrid pydantic-model

Bases: BaseModel

Configuration for output wavelength grid.

Supports three modes:

  1. Regular grid: wmin_nm/wmax_nm/step_nm (Spectral Sampling Interval)
  2. Explicit wavelengths: list of specific wavelengths
  3. From file: extract wavelengths from external NetCDF/CSV file
Example

CHIME-like regular grid (400-2500nm @ 8.4nm SSI)

WavelengthGrid(mode="regular", wmin_nm=400, wmax_nm=2500, step_nm=8.4)

Explicit wavelengths

WavelengthGrid(mode="explicit", wavelengths_nm=[450, 550, 650, 850])

From reference file

WavelengthGrid(mode="from_file", file_path="reference.nc", wavelength_variable="wavelength")

Fields:

Validators:

  • validate_mode

Attributes

file_path pydantic-field

file_path: Optional[str] = None

Path to wavelength reference file (NetCDF or CSV)

mode pydantic-field

mode: Literal["regular", "explicit", "from_file"] = (
    "regular"
)

Grid mode: 'regular', 'explicit', or 'from_file'

step_nm pydantic-field

step_nm: Optional[float] = None

Wavelength step / Spectral Sampling Interval (nm)

wavelength_variable pydantic-field

wavelength_variable: str = 'wavelength'

Variable/column name for wavelengths in file

wavelengths_nm pydantic-field

wavelengths_nm: Optional[List[float]] = None

Explicit list of wavelengths (nm)

wmax_nm pydantic-field

wmax_nm: Optional[float] = None

Maximum wavelength (nm)

wmin_nm pydantic-field

wmin_nm: Optional[float] = None

Minimum wavelength (nm)

Functions

generate_wavelengths

generate_wavelengths() -> 'np.ndarray'

Generate wavelength array based on configuration.

Returns:

Type Description
'np.ndarray'

numpy array of wavelengths in nm