Skip to content
Snippets Groups Projects

use different interp methods for cams

Compare and
2 files
+ 27
3
Compare changes
  • Side-by-side
  • Inline
Files
2
@@ -11,7 +11,16 @@ import pandas as pd
class CAMSforecast(AbstractReferenceModel):
def __init__(self, ref_name: str, ref_store_path: str = None, data_path: str = None):
def __init__(self, ref_name: str, ref_store_path: str = None, data_path: str = None, interp_method: str = None):
"""
Use parameters `cams_data_path` to set `data_path` and `cams_interp_method` to set `interp_method` in MLAir
run script.
:param ref_name:
:param ref_store_path:
:param data_path:
:param interp_method:
"""
super().__init__()
self.ref_name = ref_name
@@ -22,6 +31,7 @@ class CAMSforecast(AbstractReferenceModel):
self.data_path = os.path.abspath(".")
else:
self.data_path = os.path.abspath(data_path)
self.interp_method = interp_method
self.file_pattern = "forecasts_%s_test.nc"
self.time_dim = "index"
self.ahead_dim = "ahead"
@@ -36,7 +46,11 @@ class CAMSforecast(AbstractReferenceModel):
darray = dataset.to_array().sortby(["longitude", "latitude"])
for station, coords in missing_stations.items():
lon, lat = coords["lon"], coords["lat"]
station_data = darray.sel(longitude=lon, latitude=lat, method="nearest", drop=True).squeeze(drop=True)
if self.interp_method is None:
station_data = darray.sel(longitude=lon, latitude=lat, method="nearest", drop=True).squeeze(drop=True)
else:
station_data = darray.interp(**{"longitude": lon, "latitude": lat}, method=self.interp_method)
station_data = station_data.drop_vars(["longitude", "latitude"]).squeeze(drop=True)
station_data = station_data.expand_dims(dim={self.type_dim: [self.ref_name]}).compute()
station_data.coords[self.time_dim] = station_data.coords[self.time_dim] - pd.Timedelta(days=1)
station_data.coords[self.ahead_dim] = station_data.coords[self.ahead_dim] + 1
Loading