Skip to content
Snippets Groups Projects
Commit 167d408e authored by felix kleinert's avatar felix kleinert
Browse files

Merge branch 'issue333A-test-set-sample-uncertainty-in-postprocessing-2' into...

Merge branch 'issue333A-test-set-sample-uncertainty-in-postprocessing-2' into 'issue333_feat_test-set-sample-uncertainty'

Resolve "Test Set Sample Uncertainty in PostProcessing"

See merge request !339
parents 7f9564ca f4503c07
No related branches found
No related tags found
8 merge requests!353add developments to release v1.5.0,!352Resolve "release v1.5.0",!351Lukas issue337 bug ci pipeline fails for docs,!350Resolve "upgrade code to TensorFlow V2",!342Include sample-uncertainty to wrf workflow,!339Resolve "Test Set Sample Uncertainty in PostProcessing",!337Resolve "Test Set Sample Uncertainty in PostProcessing",!259Draft: Resolve "WRF-Datahandler should inherit from SingleStationDatahandler"
Pipeline #80849 passed
......@@ -502,3 +502,59 @@ class SkillScores:
return monthly_mean
def create_single_bootstrap_realization(data: xr.DataArray, dim_name_time: str) -> xr.DataArray:
"""
Return a bootstraped realization of data
:param data: data from which to draw ONE bootstrap realization
:param dim_name_time: name of time dimension
:return: bootstrapped realization of data
"""
num_of_blocks = data.coords[dim_name_time].shape[0]
boot_idx = np.random.choice(num_of_blocks, size=num_of_blocks, replace=True)
return data.isel({dim_name_time: boot_idx})
def calculate_average(data: xr.DataArray, **kwargs) -> xr.DataArray:
"""
Calculate mean of data
:param data: data for which to calculate mean
:return: mean of data
"""
return data.mean(**kwargs)
def create_n_bootstrap_realizations(data: xr.DataArray, dim_name_time, dim_name_model, n_boots: int = 1000,
dim_name_boots='boots') -> xr.DataArray:
"""
Create n bootstrap realizations and calculate averages across realizations
:param data: original data from which to create bootstrap realizations
:param dim_name_time: name of time dimension
:param dim_name_model: name of model dimension
:param n_boots: number of bootstap realizations
:param dim_name_boots: name of bootstap dimension
:return:
"""
res_dims = [dim_name_boots]
dims = list(data.dims)
coords = {dim_name_boots: range(n_boots), dim_name_model: data.coords[dim_name_model] }
if len(dims) > 1:
res_dims = res_dims + dims[1:]
res = xr.DataArray(np.nan, dims=res_dims, coords=coords)
for boot in range(n_boots):
res[boot] = (calculate_average(
create_single_bootstrap_realization(data, dim_name_time=dim_name_time),
dim=dim_name_time
))
return res
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment