Skip to content

Commit b3ae816

Browse files
committed
Remove all the extra code in cdip.py
1 parent a5149ed commit b3ae816

2 files changed

Lines changed: 42 additions & 70 deletions

File tree

mhkit/utils/cache.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -121,12 +121,8 @@ def _load_cache(file_extension, cache_filepath):
121121
with open(cache_filepath, "rb") as f:
122122
data_dict = pickle.load(f) # some format of 'data' and 'metadata'
123123
if isinstance(data_dict, tuple):
124-
# CDIP call returns dictionary in size 2 tuple with the dict in first element
125-
if isinstance(data_dict[0], dict):
126-
data_dict = data_dict[0]
127-
# WPTO hindcast call returns size 2 tuple with data and metadata as elements
128-
elif len(data_dict) == 2:
129-
return data_dict[0], data_dict[1]
124+
# CDIP and WPTO hindcast call returns size 2 tuple
125+
return data_dict[0], data_dict[1]
130126
data, metadata = data_dict["data"], data_dict["metadata"]
131127

132128
return data, metadata

mhkit/wave/io/cdip.py

Lines changed: 40 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -310,88 +310,64 @@ def request_parse_workflow(
310310
nc.variables["metaStationName"][:].compressed().tobytes().decode("utf-8")
311311
)
312312

313-
multiyear = False
314313
if years:
315314
if isinstance(years, int):
316-
start_date = datetime.datetime(years, 1, 1, tzinfo=pytz.UTC)
317-
end_date = datetime.datetime(years + 1, 1, 1, tzinfo=pytz.UTC)
318-
elif isinstance(years, list):
319-
if len(years) == 1:
320-
start_date = datetime.datetime(years[0], 1, 1, tzinfo=pytz.UTC)
321-
end_date = datetime.datetime(years[0] + 1, 1, 1, tzinfo=pytz.UTC)
322-
else:
323-
multiyear = True
324-
if not multiyear:
325-
# Check the cache first
315+
years = [years]
316+
317+
data = {"data": {}, "metadata": {}}
318+
multiyear_data = {}
319+
for year in years:
320+
start_date = datetime.datetime(year, 1, 1, tzinfo=pytz.UTC)
321+
end_date = datetime.datetime(year + 1, 1, 1, tzinfo=pytz.UTC)
322+
323+
# Check the cache for each individual year
326324
hash_params = f"{station_number}-{parameters}-{start_date}-{end_date}"
327-
data, _, _ = handle_caching(
325+
year_data, _, _ = handle_caching(
328326
hash_params,
329327
cache_dir,
330328
cache_content={"data": None, "metadata": None, "write_json": None},
331329
)
332-
333-
if data is None:
334-
data = get_netcdf_variables(
330+
if year_data is None:
331+
new_data = get_netcdf_variables(
335332
nc,
336333
start_date=start_date,
337334
end_date=end_date,
338335
parameters=parameters,
339336
all_2D_variables=all_2D_variables,
340337
silent=silent,
341338
)
339+
year_data = new_data["data"]
340+
# If waveFrequency is in the metadata, move it to the top level of metadata
341+
if "wave" in new_data["metadata"]:
342+
if "waveFrequency" in new_data["metadata"]["wave"]:
343+
new_data["metadata"]["waveFrequency"] = new_data["metadata"][
344+
"wave"
345+
]["waveFrequency"]
346+
new_data["metadata"].pop("wave")
347+
# Cache the individual year's data
342348
handle_caching(
343349
hash_params,
344350
cache_dir,
345-
cache_content={"data": data, "metadata": None, "write_json": None},
346-
)
347-
348-
else:
349-
data = {"data": {}, "metadata": {}}
350-
multiyear_data = {}
351-
for year in years:
352-
start_date = datetime.datetime(year, 1, 1, tzinfo=pytz.UTC)
353-
end_date = datetime.datetime(year + 1, 1, 1, tzinfo=pytz.UTC)
354-
355-
# Check the cache for each individual year
356-
hash_params = f"{station_number}-{parameters}-{start_date}-{end_date}"
357-
year_data, _, _ = handle_caching(
358-
hash_params,
359-
cache_dir,
360-
cache_content={"data": None, "metadata": None, "write_json": None},
351+
cache_content={
352+
"data": year_data,
353+
"metadata": new_data["metadata"],
354+
"write_json": None,
355+
},
361356
)
362-
if year_data is None:
363-
year_data = get_netcdf_variables(
364-
nc,
365-
start_date=start_date,
366-
end_date=end_date,
367-
parameters=parameters,
368-
all_2D_variables=all_2D_variables,
369-
silent=silent,
370-
)
371-
# Cache the individual year's data
372-
handle_caching(
373-
hash_params,
374-
cache_dir,
375-
cache_content={
376-
"data": year_data,
377-
"metadata": None,
378-
"write_json": None,
379-
},
380-
)
381-
multiyear_data[year] = year_data
382-
383-
for data_key in year_data.keys():
384-
if data_key.endswith("2D"):
385-
data[data_key] = {}
386-
for data_key2D in year_data[data_key].keys():
387-
data_list = []
388-
for year in years:
389-
data2D = multiyear_data[year][data_key][data_key2D]
390-
data_list.append(data2D)
391-
data[data_key][data_key2D] = pd.concat(data_list)
392-
else:
393-
data_list = [multiyear_data[year][data_key] for year in years]
394-
data[data_key] = pd.concat(data_list)
357+
multiyear_data[year] = year_data
358+
359+
for data_key in year_data.keys():
360+
if data_key.endswith("2D"):
361+
data[data_key] = {}
362+
for data_key2D in year_data[data_key].keys():
363+
data_list = []
364+
for year in years:
365+
data2D = multiyear_data[year][data_key][data_key2D]
366+
data_list.append(data2D)
367+
data[data_key][data_key2D] = pd.concat(data_list)
368+
else:
369+
data_list = [multiyear_data[year][data_key] for year in years]
370+
data[data_key] = pd.concat(data_list)
395371

396372
if buoy_name:
397373
try:

0 commit comments

Comments
 (0)