dubfi.fluxes.mdm¶
Unified implementation for handling uncertainty inflation etc.
Motivation¶
Uncertainties and inflation are computed distributed during inversion, but are not saved there. To provide the uncertainties used in the inversion, these need to be calculated again during post-processing. Using a common implementation should reduce the risk of undetected bugs and inconsistencies.
Added in version 0.1.0: (initial release)
Functions¶
|
Compute observation uncertainty that shall be assumed in the inversion. |
|
Compute model data mismatch uncertainty. |
|
Get explicitly configured inflation for one station and sampling height. |
|
Compute uncertainty inflation from ensembles. |
|
Compute uncertainty inflation from uncertainties. |
|
Apply uncertainty inflation to ensemble in-place. |
Module Contents¶
- dubfi.fluxes.mdm.get_obs_uncertainty(ssh, config, obs, obs_orig=None, obs_stdev=None, same_station_count=None, mec_stdev=None, signal_n=None)¶
Compute observation uncertainty that shall be assumed in the inversion.
Observation uncertainty describes the uncorrelated uncertainty applied to each observation data point, including representativity uncertainty. All variables should be provided as mole mixing ratios (mol/mol).
- Parameters:
ssh (str) – station and sampling height code
config (dict) – inversion configuration
obs (np.ndarray | xr.DataArray) – observations (time series)
obs_orig (np.ndarray | xr.DataArray, optional) – original observations (without temporal smoothing)
obs_stdev (np.ndarray | xr.DataArray, optional) – temporal variability of observations (as reported by the observation site)
same_station_count (np.ndarray | xr.DataArray, optional) – for each observation, number of all observations with equal time and station. Usually, this is the number of currently active sampling heights of the station.
mec_stdev (np.ndarray | xr.DataArray, optional) – standard deviation computed by model equivalent calculator
signal_n (np.ndarray | xr.DataArray, optional) – signal from natural fluxes. Natural fluxes are assumed to have a higher uncertainty.
- Returns:
uncertainty – resulting uncertainty
- Return type:
np.ndarray | xr.DataArray
- dubfi.fluxes.mdm.get_uncertainty(obs_uncert, meteo_uncert, bc_uncert, inflation=None)¶
Compute model data mismatch uncertainty.
- Parameters:
obs_uncert (numpy.ndarray | xarray.DataArray)
meteo_uncert (numpy.ndarray | xarray.DataArray)
bc_uncert (numpy.ndarray | xarray.DataArray | None)
inflation (numpy.ndarray | xarray.DataArray | None)
- Return type:
numpy.ndarray | xarray.DataArray
- dubfi.fluxes.mdm.get_initial_inflation(config, ssh)¶
Get explicitly configured inflation for one station and sampling height.
- Parameters:
config (dict[str, Any])
ssh (str)
- Return type:
float
- dubfi.fluxes.mdm.get_inflation_ens(config, mdm, obs_uncert, meteo_ens, bc_ens)¶
Compute uncertainty inflation from ensembles.
- Parameters:
config (dict) – inversion configuration
mdm (xr.DataArray | np.ndarray) – model data mismatch
obs_uncert (xr.DataArray | np.ndarray) – observation uncertainty (assumed to be uncorrelated), one-dimensional
meteo_ens (xr.DataArray | np.ndarray) – meteorological ensemble, dimensions should be (ensmem, time)
bc_ens (xr.DataArray | np.ndarray | None) – boundary condition ensemble, dimensions should be (bc_ens_letkf OR bc_ens, time)
- Returns:
inflation – extra inflation that shall be applied to mdm and meteo_ens.
- Return type:
xr.DataArray | np.ndarray
- dubfi.fluxes.mdm.get_inflation_uncert(config, mdm, obs_uncert, meteo_uncert, bc_uncert)¶
Compute uncertainty inflation from uncertainties.
All input arrays are expected to be one-dimensional an aligned.
- Parameters:
config (dict) – inversion configuration
mdm (xr.DataArray | np.ndarray) – model data mismatch
obs_uncert (xr.DataArray | np.ndarray) – observation uncertainty (assumed to be uncorrelated)
meteo_uncert (xr.DataArray | np.ndarray) – uncertainty due to meteorology
bc_uncert (xr.DataArray | np.ndarray | None) – uncertainty from boundary conditions
- Returns:
inflation – extra inflation that shall be applied to mdm and meteo_ens.
- Return type:
xr.DataArray | np.ndarray
- dubfi.fluxes.mdm.apply_inflation_ens(inflation, tot_ens, flux_ens, obs_uncert)¶
Apply uncertainty inflation to ensemble in-place.
- Parameters:
inflation (numpy.ndarray | xarray.DataArray)
tot_ens (numpy.ndarray | xarray.DataArray)
flux_ens (numpy.ndarray | xarray.DataArray)
obs_uncert (numpy.ndarray | xarray.DataArray)
- Return type:
None