From 3e317b13d43a0df53170b16e95c9060c152225ef Mon Sep 17 00:00:00 2001 From: aho Date: Wed, 7 Feb 2024 10:25:11 +0100 Subject: [PATCH 1/8] Correct create_spatial_bounds lat_bnds and lon_bnds --- nes/nc_projections/default_nes.py | 4 +- tests/2.3-test_bounds.py | 61 ++++++++++++++++++++++++++++++- 2 files changed, 62 insertions(+), 3 deletions(-) diff --git a/nes/nc_projections/default_nes.py b/nes/nc_projections/default_nes.py index 0c64e6b..265ddcf 100644 --- a/nes/nc_projections/default_nes.py +++ b/nes/nc_projections/default_nes.py @@ -679,13 +679,13 @@ class Nes(object): lat_bnds = self.create_single_spatial_bounds(self._lat['data'], inc_lat, spatial_nv=2) self._lat_bnds = {'data': deepcopy(lat_bnds)} - self.lat_bnds = {'data': lat_bnds[self.read_axis_limits['y_min']:self.read_axis_limits['y_max'], :]} + self.lat_bnds = {'data': lat_bnds[self.write_axis_limits['y_min']:self.write_axis_limits['y_max'], :]} inc_lon = np.abs(np.mean(np.diff(self._lon['data']))) lon_bnds = self.create_single_spatial_bounds(self._lon['data'], inc_lon, spatial_nv=2) self._lon_bnds = {'data': deepcopy(lon_bnds)} - self.lon_bnds = {'data': lon_bnds[self.read_axis_limits['x_min']:self.read_axis_limits['x_max'], :]} + self.lon_bnds = {'data': lon_bnds[self.write_axis_limits['x_min']:self.write_axis_limits['x_max'], :]} return None diff --git a/tests/2.3-test_bounds.py b/tests/2.3-test_bounds.py index c2322cf..d0e3309 100644 --- a/tests/2.3-test_bounds.py +++ b/tests/2.3-test_bounds.py @@ -14,7 +14,7 @@ parallel_method = 'Y' result_path = "Times_test_2.3_bounds_{0}_{1:03d}.csv".format(parallel_method, size) result = pd.DataFrame(index=['read', 'calculate', 'write'], - columns=['2.3.1.With_bounds', '2.3.2.Without_bounds', "2.3.3.Create_new"]) + columns=['2.3.1.With_bounds', '2.3.2.Without_bounds', "2.3.3.Create_new", "2.3.4.sel_create_bnds"]) # ====================================================================================================================== # ===================================== FILE WITH EXISTING BOUNDS ==================================================== @@ -154,6 +154,65 @@ if rank == 0: print(result.loc[:, test_name]) sys.stdout.flush() + +# ====================================================================================================================== +# ================================ REGULAR LAT-LON SEL THEN CREATE BOUNDS ============================================= +# ====================================================================================================================== + +test_name = "2.3.4.sel_create_bnds" +if rank == 0: + print(test_name) + +# USE SAME GRID SETTING AS 2.3.3 +nessy_7 = create_nes(comm=None, parallel_method=parallel_method, info=True, projection='regular', + lat_orig=lat_orig, lon_orig=lon_orig, + inc_lat=inc_lat, inc_lon=inc_lon, + n_lat=n_lat, n_lon=n_lon) +comm.Barrier() +result.loc['read', test_name] = timeit.default_timer() - st_time + +# SEL +nessy_7.sel(lat_min = 50, lat_max = 60, lon_min = 10, lon_max = 20) + +# CREATE BOUNDS +st_time = timeit.default_timer() +nessy_7.create_spatial_bounds() +comm.Barrier() +result.loc['calculate', test_name] = timeit.default_timer() - st_time + +# EXPLORE BOUNDS +print('FROM NEW GRID - Rank', rank, '-', 'Lat bounds', nessy_7.lat_bnds) +print('FROM NEW GRID - Rank', rank, '-', 'Lon bounds', nessy_7.lon_bnds) +print('FROM NEW GRID - Rank', rank, '-', '_Lat bounds', nessy_7._lat_bnds) +print('FROM NEW GRID - Rank', rank, '-', '_Lon bounds', nessy_7._lon_bnds) + +# Check lat_bnds and lon_bnds +if nessy_7.lat_bnds['data'].shape != (51, 2): + raise Exception("Wrong lat_bnds.") +if nessy_7.lon_bnds['data'].shape != (52, 2): + raise Exception("Wrong lat_bnds.") + +# WRITE +st_time = timeit.default_timer() +nessy_7.to_netcdf(test_name.replace(' ', '_') + "_{0:03d}.nc".format(size), info=True) +comm.Barrier() +result.loc['write', test_name] = timeit.default_timer() - st_time + +# REOPEN +nessy_8 = open_netcdf(test_name.replace(' ', '_') + "_{0:03d}.nc".format(size), info=True) + +# LOAD DATA AND EXPLORE BOUNDS +print('FROM NEW GRID AFTER WRITE - Rank', rank, '-', 'Lat bounds', nessy_8.lat_bnds) +print('FROM NEW GRID AFTER WRITE - Rank', rank, '-', 'Lon bounds', nessy_8.lon_bnds) +print('FROM NEW GRID AFTER WRITE - Rank', rank, '-', '_Lat bounds', nessy_8._lat_bnds) +print('FROM NEW GRID AFTER WRITE - Rank', rank, '-', '_Lon bounds', nessy_8._lon_bnds) + +comm.Barrier() +if rank == 0: + print(result.loc[:, test_name]) +sys.stdout.flush() + + if rank == 0: result.to_csv(result_path) print("TEST PASSED SUCCESSFULLY!!!!!") -- GitLab From 00281d25746e3d681d3d53aafa5193f40f8d9832 Mon Sep 17 00:00:00 2001 From: aho Date: Wed, 7 Feb 2024 10:38:33 +0100 Subject: [PATCH 2/8] Check only lon_bnds since lat is chunked in parallel --- tests/2.3-test_bounds.py | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/tests/2.3-test_bounds.py b/tests/2.3-test_bounds.py index d0e3309..09d0542 100644 --- a/tests/2.3-test_bounds.py +++ b/tests/2.3-test_bounds.py @@ -183,12 +183,10 @@ result.loc['calculate', test_name] = timeit.default_timer() - st_time # EXPLORE BOUNDS print('FROM NEW GRID - Rank', rank, '-', 'Lat bounds', nessy_7.lat_bnds) print('FROM NEW GRID - Rank', rank, '-', 'Lon bounds', nessy_7.lon_bnds) -print('FROM NEW GRID - Rank', rank, '-', '_Lat bounds', nessy_7._lat_bnds) -print('FROM NEW GRID - Rank', rank, '-', '_Lon bounds', nessy_7._lon_bnds) +#print('FROM NEW GRID - Rank', rank, '-', '_Lat bounds', nessy_7._lat_bnds) +#print('FROM NEW GRID - Rank', rank, '-', '_Lon bounds', nessy_7._lon_bnds) -# Check lat_bnds and lon_bnds -if nessy_7.lat_bnds['data'].shape != (51, 2): - raise Exception("Wrong lat_bnds.") +# Check lon_bnds if nessy_7.lon_bnds['data'].shape != (52, 2): raise Exception("Wrong lat_bnds.") @@ -204,8 +202,8 @@ nessy_8 = open_netcdf(test_name.replace(' ', '_') + "_{0:03d}.nc".format(size), # LOAD DATA AND EXPLORE BOUNDS print('FROM NEW GRID AFTER WRITE - Rank', rank, '-', 'Lat bounds', nessy_8.lat_bnds) print('FROM NEW GRID AFTER WRITE - Rank', rank, '-', 'Lon bounds', nessy_8.lon_bnds) -print('FROM NEW GRID AFTER WRITE - Rank', rank, '-', '_Lat bounds', nessy_8._lat_bnds) -print('FROM NEW GRID AFTER WRITE - Rank', rank, '-', '_Lon bounds', nessy_8._lon_bnds) +#print('FROM NEW GRID AFTER WRITE - Rank', rank, '-', '_Lat bounds', nessy_8._lat_bnds) +#print('FROM NEW GRID AFTER WRITE - Rank', rank, '-', '_Lon bounds', nessy_8._lon_bnds) comm.Barrier() if rank == 0: -- GitLab From b385b63c9bb1ae14fc9a75450020a387af6e69c5 Mon Sep 17 00:00:00 2001 From: aho Date: Thu, 8 Feb 2024 08:05:59 +0100 Subject: [PATCH 3/8] Add documentation for lat,lon_bnds and _lat,_lon_bnds --- nes/nc_projections/default_nes.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/nes/nc_projections/default_nes.py b/nes/nc_projections/default_nes.py index 265ddcf..71baf5d 100644 --- a/nes/nc_projections/default_nes.py +++ b/nes/nc_projections/default_nes.py @@ -59,8 +59,12 @@ class Nes(object): Vertical level dictionary with the complete 'data' key for all the values and the rest of the attributes. _lat : dict Latitudes dictionary with the complete 'data' key for all the values and the rest of the attributes. - _lon _ dict + _lon : dict Longitudes dictionary with the complete 'data' key for all the values and the rest of the attributes. + _lat_bnds : dict + Latitude bounds dictionary with the complete 'data' key for the latitudinal boundaries of each grid and the rest of the attributes. + _lon_bnds : dict + Longitude bounds dictionary with the complete 'data' key for the longitudinal boundaries of each grid and the rest of the attributes. parallel_method : str Parallel method to read/write. Can be chosen any of the following axis to parallelize: 'T', 'Y' or 'X'. @@ -78,6 +82,10 @@ class Nes(object): Latitudes dictionary with the portion of 'data' corresponding to the rank values. lon : dict Longitudes dictionary with the portion of 'data' corresponding to the rank values. + lat_bnds : dict + Latitude bounds dictionary with the portion of 'data' for the latitudinal boundaries corresponding to the rank values. + lon_bnds : dict + Longitude bounds dictionary with the portion of 'data' for the longitudinal boundaries corresponding to the rank values. global_attrs : dict Global attributes with the attribute name as key and data as values. _var_dim : None or tuple -- GitLab From 018ab85ec84dbe6c300060adefd8c9bc4f4647ff Mon Sep 17 00:00:00 2001 From: aho Date: Thu, 8 Feb 2024 10:12:35 +0100 Subject: [PATCH 4/8] fix create_spatial_bounds, add tests for rotated projection. --- nes/nc_projections/lcc_nes.py | 8 ++-- nes/nc_projections/mercator_nes.py | 8 ++-- nes/nc_projections/rotated_nes.py | 8 ++-- tests/2.3-test_bounds.py | 63 ++++++++++++++++++++++++++++-- 4 files changed, 71 insertions(+), 16 deletions(-) diff --git a/nes/nc_projections/lcc_nes.py b/nes/nc_projections/lcc_nes.py index 0f7ff21..8225c2d 100644 --- a/nes/nc_projections/lcc_nes.py +++ b/nes/nc_projections/lcc_nes.py @@ -428,15 +428,15 @@ class LCCNes(Nes): self._lat_bnds = {} self._lat_bnds['data'] = deepcopy(lat_bnds) self.lat_bnds = {} - self.lat_bnds['data'] = lat_bnds[self.read_axis_limits['y_min']:self.read_axis_limits['y_max'], - self.read_axis_limits['x_min']:self.read_axis_limits['x_max'], + self.lat_bnds['data'] = lat_bnds[self.write_axis_limits['y_min']:self.write_axis_limits['y_max'], + self.write_axis_limits['x_min']:self.write_axis_limits['x_max'], :] self._lon_bnds = {} self._lon_bnds['data'] = deepcopy(lon_bnds) self.lon_bnds = {} - self.lon_bnds['data'] = lon_bnds[self.read_axis_limits['y_min']:self.read_axis_limits['y_max'], - self.read_axis_limits['x_min']:self.read_axis_limits['x_max'], + self.lon_bnds['data'] = lon_bnds[self.write_axis_limits['y_min']:self.write_axis_limits['y_max'], + self.write_axis_limits['x_min']:self.write_axis_limits['x_max'], :] return None diff --git a/nes/nc_projections/mercator_nes.py b/nes/nc_projections/mercator_nes.py index 01b3819..cc02a30 100644 --- a/nes/nc_projections/mercator_nes.py +++ b/nes/nc_projections/mercator_nes.py @@ -407,15 +407,15 @@ class MercatorNes(Nes): self._lat_bnds = {} self._lat_bnds['data'] = deepcopy(lat_bnds) self.lat_bnds = {} - self.lat_bnds['data'] = lat_bnds[self.read_axis_limits['y_min']:self.read_axis_limits['y_max'], - self.read_axis_limits['x_min']:self.read_axis_limits['x_max'], + self.lat_bnds['data'] = lat_bnds[self.write_axis_limits['y_min']:self.write_axis_limits['y_max'], + self.write_axis_limits['x_min']:self.write_axis_limits['x_max'], :] self._lon_bnds = {} self._lon_bnds['data'] = deepcopy(lon_bnds) self.lon_bnds = {} - self.lon_bnds['data'] = lon_bnds[self.read_axis_limits['y_min']:self.read_axis_limits['y_max'], - self.read_axis_limits['x_min']:self.read_axis_limits['x_max'], + self.lon_bnds['data'] = lon_bnds[self.write_axis_limits['y_min']:self.write_axis_limits['y_max'], + self.write_axis_limits['x_min']:self.write_axis_limits['x_max'], :] return None diff --git a/nes/nc_projections/rotated_nes.py b/nes/nc_projections/rotated_nes.py index b771985..eccbe03 100644 --- a/nes/nc_projections/rotated_nes.py +++ b/nes/nc_projections/rotated_nes.py @@ -483,15 +483,15 @@ class RotatedNes(Nes): self._lat_bnds = {} self._lat_bnds['data'] = deepcopy(lat_bnds) self.lat_bnds = {} - self.lat_bnds['data'] = lat_bnds[self.read_axis_limits['y_min']:self.read_axis_limits['y_max'], - self.read_axis_limits['x_min']:self.read_axis_limits['x_max'], + self.lat_bnds['data'] = lat_bnds[self.write_axis_limits['y_min']:self.write_axis_limits['y_max'], + self.write_axis_limits['x_min']:self.write_axis_limits['x_max'], :] self._lon_bnds = {} self._lon_bnds['data'] = deepcopy(lon_bnds) self.lon_bnds = {} - self.lon_bnds['data']= lon_bnds[self.read_axis_limits['y_min']:self.read_axis_limits['y_max'], - self.read_axis_limits['x_min']:self.read_axis_limits['x_max'], + self.lon_bnds['data']= lon_bnds[self.write_axis_limits['y_min']:self.write_axis_limits['y_max'], + self.write_axis_limits['x_min']:self.write_axis_limits['x_max'], :] return None diff --git a/tests/2.3-test_bounds.py b/tests/2.3-test_bounds.py index 09d0542..7ddd07f 100644 --- a/tests/2.3-test_bounds.py +++ b/tests/2.3-test_bounds.py @@ -5,6 +5,7 @@ import timeit import pandas as pd from mpi4py import MPI from nes import * +#from git.NES.nes import * comm = MPI.COMM_WORLD rank = comm.Get_rank() @@ -14,7 +15,7 @@ parallel_method = 'Y' result_path = "Times_test_2.3_bounds_{0}_{1:03d}.csv".format(parallel_method, size) result = pd.DataFrame(index=['read', 'calculate', 'write'], - columns=['2.3.1.With_bounds', '2.3.2.Without_bounds', "2.3.3.Create_new", "2.3.4.sel_create_bnds"]) + columns=['2.3.1.With_bounds', '2.3.2.Without_bounds', "2.3.3.Create_new", "2.3.4.latlon_sel_create_bnds", "2.3.5.rotated_sel_create_bnds"]) # ====================================================================================================================== # ===================================== FILE WITH EXISTING BOUNDS ==================================================== @@ -159,7 +160,7 @@ sys.stdout.flush() # ================================ REGULAR LAT-LON SEL THEN CREATE BOUNDS ============================================= # ====================================================================================================================== -test_name = "2.3.4.sel_create_bnds" +test_name = "2.3.4.latlon_sel_create_bnds" if rank == 0: print(test_name) @@ -172,7 +173,7 @@ comm.Barrier() result.loc['read', test_name] = timeit.default_timer() - st_time # SEL -nessy_7.sel(lat_min = 50, lat_max = 60, lon_min = 10, lon_max = 20) +nessy_7.sel(lat_min=50, lat_max=60, lon_min=10, lon_max=20) # CREATE BOUNDS st_time = timeit.default_timer() @@ -188,7 +189,7 @@ print('FROM NEW GRID - Rank', rank, '-', 'Lon bounds', nessy_7.lon_bnds) # Check lon_bnds if nessy_7.lon_bnds['data'].shape != (52, 2): - raise Exception("Wrong lat_bnds.") + raise Exception("Wrong lon_bnds.") # WRITE st_time = timeit.default_timer() @@ -211,6 +212,60 @@ if rank == 0: sys.stdout.flush() +# ====================================================================================================================== +# ================================ ROTATED SEL THEN CREATE BOUNDS ============================================= +# ====================================================================================================================== + +test_name = "2.3.5.rotated_sel_create_bnds" +if rank == 0: + print(test_name) + +# USE FILE AS 2.3.2 + +# Original path: /gpfs/scratch/bsc32/bsc32538/mr_multiplyby/OUT/stats_bnds/monarch/a45g/regional/daily_max/O3_all/O3_all-000_2021080300.nc +# Rotated grid from MONARCH +st_time = timeit.default_timer() +path_9 = "/gpfs/projects/bsc32/models/NES_tutorial_data/O3_all-000_2021080300.nc" +nessy_9 = open_netcdf(path=path_9, parallel_method=parallel_method, info=True) +comm.Barrier() +result.loc['read', test_name] = timeit.default_timer() - st_time + +# SEL +nessy_9.sel(lat_min=50, lat_max=60, lon_min=10, lon_max=15) + +# CREATE BOUNDS +st_time = timeit.default_timer() +nessy_9.create_spatial_bounds() +comm.Barrier() +result.loc['calculate', test_name] = timeit.default_timer() - st_time + +# EXPLORE BOUNDS +print('FILE WITHOUT EXISTING BOUNDS - Rank', rank, '-', 'Lat bounds', nessy_9.lat_bnds) +print('FILE WITHOUT EXISTING BOUNDS - Rank', rank, '-', 'Lon bounds', nessy_9.lon_bnds) +print('CHECK!!! ', nessy_9.lon_bnds['data'].shape) +# Check lon_bnds +if nessy_9.lon_bnds['data'].shape[0:2] != nessy_9.lon['data'].shape: + raise Exception("Wrong lon_bnds.") + +# WRITE +st_time = timeit.default_timer() +nessy_9.to_netcdf('/tmp/bounds_file_9.nc', info=True) +comm.Barrier() +result.loc['write', test_name] = timeit.default_timer() - st_time + +# REOPEN +nessy_10 = open_netcdf('/tmp/bounds_file_9.nc', info=True) + +# LOAD DATA AND EXPLORE BOUNDS +print('FILE WITH EXISTING BOUNDS AFTER WRITE - Rank', rank, '-', 'Lat bounds', nessy_10.lat_bnds) +print('FILE WITH EXISTING BOUNDS AFTER WRITE - Rank', rank, '-', 'Lon bounds', nessy_10.lon_bnds) + +comm.Barrier() +if rank == 0: + print(result.loc[:, test_name]) +sys.stdout.flush() + + if rank == 0: result.to_csv(result_path) print("TEST PASSED SUCCESSFULLY!!!!!") -- GitLab From e82b026d8d3c3f9292ed304e2b0c0ca3acd92f74 Mon Sep 17 00:00:00 2001 From: aho Date: Tue, 13 Feb 2024 03:54:49 +0100 Subject: [PATCH 5/8] remove extra line --- tests/2.3-test_bounds.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/2.3-test_bounds.py b/tests/2.3-test_bounds.py index 7ddd07f..815b9e9 100644 --- a/tests/2.3-test_bounds.py +++ b/tests/2.3-test_bounds.py @@ -5,7 +5,6 @@ import timeit import pandas as pd from mpi4py import MPI from nes import * -#from git.NES.nes import * comm = MPI.COMM_WORLD rank = comm.Get_rank() -- GitLab From d39253e56c5d4f829bf5d34983808988bb8d4bbd Mon Sep 17 00:00:00 2001 From: aho Date: Tue, 13 Feb 2024 16:33:25 +0100 Subject: [PATCH 6/8] Add tests for write and reopen data --- tests/2.3-test_bounds.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/tests/2.3-test_bounds.py b/tests/2.3-test_bounds.py index 815b9e9..a761858 100644 --- a/tests/2.3-test_bounds.py +++ b/tests/2.3-test_bounds.py @@ -205,6 +205,10 @@ print('FROM NEW GRID AFTER WRITE - Rank', rank, '-', 'Lon bounds', nessy_8.lon_b #print('FROM NEW GRID AFTER WRITE - Rank', rank, '-', '_Lat bounds', nessy_8._lat_bnds) #print('FROM NEW GRID AFTER WRITE - Rank', rank, '-', '_Lon bounds', nessy_8._lon_bnds) +# Check lon_bnds +if nessy_8.lon_bnds['data'].shape != (52, 2): + raise Exception("Wrong lon_bnds.") + comm.Barrier() if rank == 0: print(result.loc[:, test_name]) @@ -241,7 +245,7 @@ result.loc['calculate', test_name] = timeit.default_timer() - st_time # EXPLORE BOUNDS print('FILE WITHOUT EXISTING BOUNDS - Rank', rank, '-', 'Lat bounds', nessy_9.lat_bnds) print('FILE WITHOUT EXISTING BOUNDS - Rank', rank, '-', 'Lon bounds', nessy_9.lon_bnds) -print('CHECK!!! ', nessy_9.lon_bnds['data'].shape) + # Check lon_bnds if nessy_9.lon_bnds['data'].shape[0:2] != nessy_9.lon['data'].shape: raise Exception("Wrong lon_bnds.") @@ -259,6 +263,10 @@ nessy_10 = open_netcdf('/tmp/bounds_file_9.nc', info=True) print('FILE WITH EXISTING BOUNDS AFTER WRITE - Rank', rank, '-', 'Lat bounds', nessy_10.lat_bnds) print('FILE WITH EXISTING BOUNDS AFTER WRITE - Rank', rank, '-', 'Lon bounds', nessy_10.lon_bnds) +# Check lon_bnds +if nessy_10.lon_bnds['data'].shape[0:2] != nessy_10.lon['data'].shape: + raise Exception("Wrong lon_bnds.") + comm.Barrier() if rank == 0: print(result.loc[:, test_name]) -- GitLab From c6702347a3a6992d9f19330b1186993ee96da938 Mon Sep 17 00:00:00 2001 From: aho Date: Wed, 14 Feb 2024 03:35:54 +0100 Subject: [PATCH 7/8] Add None option to doc --- nes/nc_projections/default_nes.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/nes/nc_projections/default_nes.py b/nes/nc_projections/default_nes.py index 71baf5d..965e103 100644 --- a/nes/nc_projections/default_nes.py +++ b/nes/nc_projections/default_nes.py @@ -61,9 +61,9 @@ class Nes(object): Latitudes dictionary with the complete 'data' key for all the values and the rest of the attributes. _lon : dict Longitudes dictionary with the complete 'data' key for all the values and the rest of the attributes. - _lat_bnds : dict + _lat_bnds : None or dict Latitude bounds dictionary with the complete 'data' key for the latitudinal boundaries of each grid and the rest of the attributes. - _lon_bnds : dict + _lon_bnds : None or dict Longitude bounds dictionary with the complete 'data' key for the longitudinal boundaries of each grid and the rest of the attributes. parallel_method : str Parallel method to read/write. @@ -82,9 +82,9 @@ class Nes(object): Latitudes dictionary with the portion of 'data' corresponding to the rank values. lon : dict Longitudes dictionary with the portion of 'data' corresponding to the rank values. - lat_bnds : dict + lat_bnds : None or dict Latitude bounds dictionary with the portion of 'data' for the latitudinal boundaries corresponding to the rank values. - lon_bnds : dict + lon_bnds : None or dict Longitude bounds dictionary with the portion of 'data' for the longitudinal boundaries corresponding to the rank values. global_attrs : dict Global attributes with the attribute name as key and data as values. -- GitLab From c4a32867bb4f2ffb6cc5efba44f54b9d166f317e Mon Sep 17 00:00:00 2001 From: ctena Date: Wed, 14 Feb 2024 10:21:18 +0100 Subject: [PATCH 8/8] Update CHANGELOG.rst --- CHANGELOG.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 5126b13..a91fafd 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -19,6 +19,7 @@ CHANGELOG * Improved load_nes.py removing redundant code * Fix vertical interpolation for descendant level values (Pressure) ([#71](https://earth.bsc.es/gitlab/es/NES/-/issues/71)) * Removed lat-lon dimension on the NetCDF projections that not need them + * Fixed the bug when creating the spatial bounds after selecting a region ([#68](https://earth.bsc.es/gitlab/es/NES/-/issues/68)) 1.1.3 ============ -- GitLab