Skip to content

Commit 545ac65

Browse files
committed
Allow skipping features during cutout preparation
1 parent 1690d26 commit 545ac65

2 files changed

Lines changed: 19 additions & 8 deletions

File tree

atlite/data.py

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ def get_features(
5959

6060
datasets = compute(*datasets)
6161

62-
ds = xr.merge(datasets, compat="equals")
62+
ds = xr.merge([da for da in datasets if da is not None], compat="equals")
6363
for v in ds:
6464
da = ds[v]
6565
da.attrs["module"] = module
@@ -230,21 +230,25 @@ def cutout_prepare(
230230
concurrent_requests=concurrent_requests,
231231
**parameter_updates,
232232
)
233-
prepared |= set(missing_features)
234-
233+
new_features = set(da.attrs["feature"] for da in ds.data_vars.values())
234+
if not new_features:
235+
logger.warning("No new features prepared")
236+
return
235237
attrs = non_bool_dict(
236238
cutout.data.attrs
237239
| ds.attrs
238-
| dict(prepared_features=list(prepared))
240+
| dict(prepared_features=list(prepared | new_features))
239241
| parameter_updates
240242
)
241243

242244
# Add optional compression to the newly prepared features
243245
if compression:
244-
for v in missing_vars:
245-
ds[v].encoding.update(compression)
246+
for da in ds.data_vars.values():
247+
da.encoding.update(compression)
246248

247-
ds = cutout.data.merge(ds[missing_vars.values]).assign_attrs(attrs)
249+
ds = cutout.data.merge(
250+
ds[missing_vars.loc[list(new_features)].values]
251+
).assign_attrs(attrs)
248252

249253
# write data to tmp file, copy it to original data, this is much safer
250254
# than appending variables

atlite/datasets/era5.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -583,7 +583,14 @@ def get_data_windspeed_bias_correction(cutout, retrieval_params, creation_parame
583583
"""
584584
Get windspeed bias correction
585585
"""
586-
real_average_path = creation_parameters["windspeed_real_average_path"]
586+
real_average_path = creation_parameters.get("windspeed_real_average_path")
587+
if real_average_path is None:
588+
logger.warning(
589+
"Skipping feature windspeed_bias_correction, since windspeed_real_average_path was not provided.\n"
590+
"Download mean wind speeds from global wind atlas at https://globalwindatlas.info/ and add it\n"
591+
'to the cutout with `cutout.prepare(windspeed_real_average_path="path/to/gwa3_250_windspeed_100m.tif")`'
592+
)
593+
return None
587594
height = creation_parameters.get("windspeed_height", 100)
588595
data_average = retrieve_windspeed_average(cutout, height, **retrieval_params)
589596

0 commit comments

Comments
 (0)