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