From 1a25b13db82322f571a18d7ae2837a6faade85f7 Mon Sep 17 00:00:00 2001 From: Simon Grasse <s.grasse@fz-juelich.de> Date: Thu, 30 Nov 2023 17:40:52 +0100 Subject: [PATCH] fix usage/implementation --- toargridding/grids.py | 12 ++++-------- toargridding/metadata.py | 8 ++++---- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/toargridding/grids.py b/toargridding/grids.py index 3352c15..ed4f88a 100644 --- a/toargridding/grids.py +++ b/toargridding/grids.py @@ -13,10 +13,7 @@ from toargridding.toar_rest_client import ( ) from toargridding.metadata import ( Variables, - DataVariables, - Variable, Coordinate, - DataVariable, get_variable_attributes, get_global_attributes, ) @@ -82,6 +79,7 @@ class RegularGrid(GridDefinition): datasets[statistic] = self.create_dataset(cell_statistics, metadata) return datasets + print(cls) def clean_coords(self, coords: pd.DataFrame): valid_coords = coords.notna().all(axis=1) @@ -131,7 +129,7 @@ class RegularGrid(GridDefinition): self, gridded_ds: xr.Dataset, cell_statistic, grouped_timeseries, time ): values = self.create_gridded_statistics(time, grouped_timeseries) - + print(values.shape) gridded_ds = gridded_ds.assign( # maybe better all in one ? (memory) { cell_statistic: ( @@ -177,13 +175,11 @@ class RegularGrid(GridDefinition): self, time: pd.DatetimeIndex, metadata: pd.DataFrame ) -> xr.Dataset: # TODO make CF-compliant => docs coords = { - Variables.longitude.name: self.lon, - Variables.latitude.name: self.lat, + Variables.longitude.name: self.lon.as_data_array(dims=self.lon.name), + Variables.latitude.name: self.lat.as_data_array(dims=self.lat.name), Variables.time.name: time, } ds = xr.Dataset(coords=coords, attrs=get_global_attributes(metadata)) - ds.longitude.attrs = get_variable_attributes(Variables.longitude) - ds.latitude.attrs = get_variable_attributes(Variables.latitude) return ds diff --git a/toargridding/metadata.py b/toargridding/metadata.py index 00ee2c6..4146498 100644 --- a/toargridding/metadata.py +++ b/toargridding/metadata.py @@ -30,8 +30,8 @@ class Variable: def get_metadata(variable: Variables): return VARIABLE_METADATA[variable] - def as_data_array(self, name, dims): - return xr.DataArray(self.data, name=name, dims=dims, attrs=self.attributes) + def as_data_array(self, dims): + return xr.DataArray(self.data, name=self.name, dims=dims, attrs=self.attributes) @property def size(self): @@ -46,7 +46,7 @@ class Variable: return self.data.max() - +@dataclass class Coordinate(Variable): resolution: float @@ -58,7 +58,7 @@ class Coordinate(Variable): n = int(span / resolution) # raise error if invalid inputs ? data = np.linspace(min, max, n + 1) - cls.from_data(data, variable, resolution=resolution) + return cls.from_data(data, variable, resolution=resolution) def get_global_attributes(metadata): -- GitLab