From ca66f488e90447e4564a97fa273fd85b48cd8ae0 Mon Sep 17 00:00:00 2001
From: Carsten Hinz <c.hinz@fz-juelich.de>
Date: Tue, 4 Jun 2024 09:50:46 +0200
Subject: [PATCH] rename of parameter

adopted test to use function of Grid class
---
 tests/coordinates.py  | 41 ++++++++++++++++-------------------------
 toargridding/grids.py |  9 +++++----
 2 files changed, 21 insertions(+), 29 deletions(-)

diff --git a/tests/coordinates.py b/tests/coordinates.py
index 9781cf1..86a3ec6 100644
--- a/tests/coordinates.py
+++ b/tests/coordinates.py
@@ -4,36 +4,27 @@ from toargridding.variables import Coordinate
 from toargridding.metadata import Coordinates
 import numpy as np
 from pandas import Series
+from toargridding.grids import RegularGrid
+import matplotlib.pyplot as plt
 
-def coord_to_index(coord : Series, x0_axis : float, d_axis : float, binWrap:int=None) -> np.array:
-        """converts a coordinate into a bin index on one axis
+print("Script for visual inspection of coordinate results for longitude and latitude")
 
-        Parameters:
-        ----------
-        coord:
-            coordinate for conversion
-        x0_axis:
-            offset of the axis
-        d_axis:
-            resolution of the axis
-        """
-        binIDs = (np.ceil((coord / d_axis) - 0.5) - x0_axis / d_axis).astype(int)
-        binIDs[binIDs >= binWrap] -=binWrap
-        return binIDs
+lon = Coordinate.from_resolution(Coordinates.longitude, 1,-180,180, True)
+print(lon)
 
+print("\n")
 
-print("Script for visual inspection of coordinate results for longitude and latitude")
+lat = Coordinate.from_resolution(Coordinates.latitude, 1.9,-90,90, False)
+print(lat)
 
-lon = Coordinate.from_resolution(Coordinates.longitude, 2.5,-180,180, True)
-print(lon)
+testGrid = RegularGrid(lat_resolution=1.9, lon_resolution=2.5)
 
-testData = [x+0.1 for x in range(-180,180)]
-testBins = coord_to_index(Series(testData), lon.min, lon.step, len(lon.data) )
-print(testBins)
-print(len(lon.data))
-print(lon.data[144])
+testData = [x+0.1 for x in np.arange(-180,181, .5)]
+testBins = testGrid.coord_to_index(Series(testData), lon.min, lon.step, len(lon.data) )
+
+for val, bin in zip(testData, testBins):
+    print(val, "->", bin)
 
-print("\n")
 
-#lat = Coordinate.from_resolution(Coordinates.latitude, 1.9,-90,90, False)
-#print(lat)
+plt.plot(testData, testBins)
+plt.show()
\ No newline at end of file
diff --git a/toargridding/grids.py b/toargridding/grids.py
index cfdd462..fc32030 100644
--- a/toargridding/grids.py
+++ b/toargridding/grids.py
@@ -278,7 +278,7 @@ class RegularGrid(GridDefinition):
 
         return pd.Series(id_i, index=id_x.index)
 
-    def coord_to_index(self, coord : pd.Series, x0_axis : float, d_axis : float, max4binWrap : int=None) -> np.array:
+    def coord_to_index(self, coord : pd.Series, x0_axis : float, d_axis : float, maxBin4Wrap : int=None) -> np.array:
         """converts a coordinate into a bin index on one axis
 
         Parameters:
@@ -289,12 +289,13 @@ class RegularGrid(GridDefinition):
             offset of the axis
         d_axis:
             resolution of the axis
-        max4binWrap:
+        maxBin4Wrap:
             this is the maximum bin number. If it is set, thw bin numbers wrap around, like for the latitude
         """
         ids = (np.ceil((coord / d_axis) - 0.5) - x0_axis / d_axis).astype(int)
-        if max4binWrap is not None:
-            ids[ids >= max4binWrap] %= max4binWrap
+        if maxBin4Wrap is not None:
+            ids[ids >= maxBin4Wrap] %= maxBin4Wrap
+            ids[ids < 0] += maxBin4Wrap
         return ids
 
     def get_empty_grid(self, time: Variable, metadata: Metadata) -> xr.Dataset:  # TODO make CF-compliant => docs
-- 
GitLab