Skip to content

Commit 42937f1

Browse files
authored
Merge pull request #2761 from DestinE-Climate-DT/v0.19-op-ecmean-fix
[OP] Enable ECmean time selection
2 parents 8db568d + f9b0280 commit 42937f1

File tree

2 files changed

+17
-9
lines changed

2 files changed

+17
-9
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ AQUA core complete list:
99
- Netcdf4 and h5py in env instead of pip (#2739)
1010

1111
AQUA diagnostics complete list:
12+
- ECmean: Enable time selection (#2761)
1213

1314
## [v0.19.10]
1415

src/aqua_diagnostics/ecmean/cli_ecmean.py

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ def parse_arguments(arguments):
5050
def reader_data(model, exp, source,
5151
catalog=None, regrid='r100',
5252
keep_vars=None, loglevel='WARNING',
53+
startdate=None, enddate=None,
5354
reader_kwargs: dict = {}):
5455
"""
5556
Simple function to retrieve and do some operation on reader data
@@ -60,6 +61,8 @@ def reader_data(model, exp, source,
6061
source (str): source of the data
6162
catalog (str, optional): catalog to be used, defaults to None
6263
regrid (str, optional): regrid method, defaults to 'r100'
64+
startdate (str, optional): start date in the format YYYY-MM-DD, defaults to None
65+
enddate (str, optional): end date in the format YYYY-MM-DD, defaults to None
6366
keep_vars (list, optional): list of variables to keep, defaults to None
6467
loglevel (str, optional): logging level, defaults to 'WARNING'
6568
reader_kwargs (dict, optional): list of reader_kwargs. Defaults to {}.
@@ -77,21 +80,22 @@ def reader_data(model, exp, source,
7780
# Try to read the data, if dataset is not available return None
7881
try:
7982
reader = Reader(
80-
model=model, exp=exp, source=source, catalog=catalog,
83+
model=model, exp=exp, source=source, catalog=catalog,
8184
regrid=regrid, **reader_kwargs
8285
)
83-
xfield = reader.retrieve()
84-
if regrid is not None:
85-
xfield = reader.regrid(xfield)
86-
86+
xfield = reader.retrieve(startdate=startdate, enddate=enddate, var=keep_vars)
8787
except Exception as err:
8888
reader_logger.error('Error while reading model %s: %s', model, err)
8989
return None
90+
91+
# regrid after variable selection
92+
if regrid is not None:
93+
try:
94+
return reader.regrid(xfield)
95+
except Exception as err:
96+
reader_logger.error('Error while regridding model %s: %s', model, err)
97+
return None
9098

91-
# return only vars that are available: slower but avoid reader failures
92-
if keep_vars is None:
93-
return xfield
94-
return xfield[[value for value in keep_vars if value in xfield.data_vars]]
9599

96100
def data_check(data_atm, data_oce, logger=None):
97101
"""
@@ -289,11 +293,13 @@ def set_description(diagnostic, model, exp, year1, year2, config):
289293
logger.info('Loading atmospheric data %s', model)
290294
data_atm = reader_data(model=model, exp=exp, source=source_atm,
291295
catalog=catalog, keep_vars=atm_vars, regrid=regrid,
296+
startdate=startdate, enddate=enddate,
292297
reader_kwargs=reader_kwargs)
293298

294299
logger.info('Loading oceanic data from %s', model)
295300
data_oce = reader_data(model=model, exp=exp, source=source_oce,
296301
catalog=catalog, keep_vars=oce_vars, regrid=regrid,
302+
startdate=startdate, enddate=enddate,
297303
reader_kwargs=reader_kwargs)
298304

299305
# check the data
@@ -329,6 +335,7 @@ def set_description(diagnostic, model, exp, year1, year2, config):
329335
elif diagnostic == 'global_mean':
330336
ecmean.store(yamlfile=filename_dict['yml'], tablefile=filename_dict['txt'])
331337
ecmean_fig = ecmean.plot(diagname=diagnostic, returnfig=True, storefig=False)
338+
332339
if save_pdf:
333340
logger.info('Saving PDF %s plot...', diagnostic)
334341
outputsaver.save_pdf(fig=ecmean_fig, diagnostic_product=diagnostic,

0 commit comments

Comments
 (0)