eradiate.experiments.CanopyAtmosphereExperiment#
- class eradiate.experiments.CanopyAtmosphereExperiment(measures=_Nothing.NOTHING, results=_Nothing.NOTHING, default_spectral_set=AUTO, quad_spec=_Nothing.NOTHING, extra_objects=None, illumination=_Nothing.NOTHING, geometry='plane_parallel', atmosphere=_Nothing.NOTHING, canopy=None, padding=0, surface=_Nothing.NOTHING, integrator=AUTO)[source]#
Bases:
EarthObservationExperiment
Simulate radiation in a scene with an explicit canopy and atmosphere. This experiment assumes that the surface is plane and accounts for ground unit cell padding.
- Parameters:
measures (
list
ofMeasure
orlist
ofdict
orMeasure
ordict
, default:MultiDistantMeasure()
) – List of measure specifications. The passed list may contain dictionaries, which will be interpreted bymeasure_factory
. Optionally, a singleMeasure
or dictionary specification may be passed and will automatically be wrapped into a list.default_spectral_set (
BinSet
orWavelengthSet
orAUTO
, default:AUTO
) – Default spectral set. This attribute is used to set the default value forspectral_set
.If the value isAUTO
, the default spectral set is selected based on the active mode. Otherwise, the value must be aBinSet
orWavelengthSet
instance.extra_objects (
dict
orNone
, default:None
) – Dictionary of extra objects to be added to the scene. The keys of this dictionary are used to identify the objects in the kernel dictionary.illumination (
DirectionalIllumination
ordict
, default:DirectionalIllumination()
) – Illumination specification. This parameter can be specified as a dictionary which will be interpreted byillumination_factory
.geometry (
str
ordict
orPlaneParallelGeometry
, default:"plane_parallel"
) – Problem geometry.atmosphere (
Atmosphere
ordict
orNone
, optional, default:HomogeneousAtmosphere()
) – Atmosphere specification. If set toNone
, no atmosphere will be added. This parameter can be specified as a dictionary which will be interpreted byatmosphere_factory
.canopy (
Canopy
ordict
orNone
, optional, default:None
) – Canopy specification. This parameter can be specified as a dictionary which will be interpreted bybiosphere_factory
.padding (
int
, optional, default:0
) – Padding level. The canopy will be padded with copies to account for adjacency effects. This, in practice, has effects similar to making the scene periodic.A value of 0 will yield only the defined scene. A value of 1 will add one copy in every direction, yielding a 3×3 patch. A value of 2 will yield a 5×5 patch, etc. The optimal padding level depends on the scene.surface (
Surface
orBSDF
ordict
orNone
, optional, default:BasicSurface(bsdf=LambertianBSDF())
) – Surface specification. ASurface
object may be passed: its shape specifications will be bypassed and the surface size will be computed automatically upon kernel dictionary generation. ABSDF
may also be passed: it will be wrapped automatically in aBasicSurface
instance. If a dictionary is passed, it will be first interpreted as aBSDF
; if this fails, it will then be interpreted as aSurface
. Finally, this field can be set toNone
: in that case, no surface will be added.integrator (
Integrator
ordict
orAUTO
, default:AUTO
) – Monte Carlo integration algorithm specification. This parameter can be specified as a dictionary which will be interpreted byIntegratorFactory.convert()
.If set to AUTO, the integrator will be set depending on the presence of an atmosphere.If an atmosphere is defined the integrator defaults toVolPathIntegrator`otherwise a :class:
.PathIntegrator` will be used.
- Fields:
measures (
list
ofMeasure
) – List of measure specifications.default_spectral_set (
BinSet
orWavelengthSet
) – Default spectral set.extra_objects (
dict
) – Dictionary of extra objects to be added to the scene.illumination (
DirectionalIllumination
) – Illumination specification.geometry (
PlaneParallelGeometry
) – Problem geometry.atmosphere (
Atmosphere
orNone
) – Atmosphere specification.padding (
int
) – Padding level.
Warning
Canopy padding is controlled using the padding parameter: do not pad the canopy itself manually.
Notes
A post-initialisation step will constrain the measure setup if a distant measure is used and no target is defined:
if a canopy is defined, the target will be set to the top of the canopy unit cell (i.e. without its padding);
if no canopy is defined, the target will be set according to the atmosphere (i.e. to [0, 0, toa] where toa is the top-of-atmosphere altitude);
if neither atmosphere nor canopy are defined, the target is set to [0, 0, 0].
This experiment supports arbitrary measure positioning, except for
MultiRadiancemeterMeasure
, for which subsensor origins are required to be either all inside or all outside of the atmosphere. If an unsuitable configuration is detected, aValueError
will be raised during initialization.Currently this experiment is limited to the plane-parallel geometry.
- clear()#
Clear previous experiment results and reset internal state.
- init()#
Generate kernel dictionary and initialise Mitsuba scene.
- pipeline(measure)#
Return the post-processing pipeline for a given measure.
- process(spp=0, seed_state=None)#
Run simulation and collect raw results.
- Parameters:
- spectral_indices(measure_index)#
Generate spectral indices for a given measure.
- Parameters:
measure_index (
int
) – Measure index for which spectral indices are generated.- Yields:
SpectralIndex
– Spectral index.
- property context_init#
Return a single context used for scene initialization.
- property contexts#
Return a list of contexts used for processing.
- property integrator#
Integrator used to solve the radiative transfer equation.
- Type:
- property results#
Post-processed simulation results.
- Returns:
dict[str
,Dataset]
– Dictionary mapping measure IDs to xarray datasets.
- property scene#
Return a scene object used for kernel dictionary template and parameter table generation.
- property spectral_set#
A dictionary mapping measure index to the associated spectral set.