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:
-
type(Literal['delta', 'uniform', 'dataset', 'gaussian']) -
wavelengths(Optional[List[float]]) -
wmin(Optional[float]) -
wmax(Optional[float]) -
dataset_id(Optional[str]) -
fwhm_nm(Optional[float]) -
spectral_regions(Optional[List[SpectralRegion]]) -
output_grid(Optional[WavelengthGrid])
Validators:
-
validate_wavelengths→wavelengths -
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:
- Regular grid: wmin_nm/wmax_nm/step_nm (Spectral Sampling Interval)
- Explicit wavelengths: list of specific wavelengths
- 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:
-
mode(Literal['regular', 'explicit', 'from_file']) -
wmin_nm(Optional[float]) -
wmax_nm(Optional[float]) -
step_nm(Optional[float]) -
wavelengths_nm(Optional[List[float]]) -
file_path(Optional[str]) -
wavelength_variable(str)
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 |