roms-tools 2.6.2__py3-none-any.whl → 2.7.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. roms_tools/__init__.py +1 -0
  2. roms_tools/analysis/roms_output.py +11 -77
  3. roms_tools/analysis/utils.py +0 -66
  4. roms_tools/constants.py +2 -0
  5. roms_tools/download.py +46 -3
  6. roms_tools/plot.py +22 -5
  7. roms_tools/setup/cdr_forcing.py +1126 -0
  8. roms_tools/setup/datasets.py +742 -87
  9. roms_tools/setup/grid.py +42 -4
  10. roms_tools/setup/river_forcing.py +11 -84
  11. roms_tools/setup/tides.py +81 -411
  12. roms_tools/setup/utils.py +241 -37
  13. roms_tools/tests/test_setup/test_cdr_forcing.py +772 -0
  14. roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/.zmetadata +53 -1
  15. roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/river_tracer/.zattrs +1 -1
  16. roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/tracer_long_name/.zarray +20 -0
  17. roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/tracer_long_name/.zattrs +6 -0
  18. roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/tracer_long_name/0 +0 -0
  19. roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/tracer_unit/.zarray +20 -0
  20. roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/tracer_unit/.zattrs +6 -0
  21. roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/tracer_unit/0 +0 -0
  22. roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/.zmetadata +53 -1
  23. roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_tracer/.zattrs +1 -1
  24. roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/tracer_long_name/.zarray +20 -0
  25. roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/tracer_long_name/.zattrs +6 -0
  26. roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/tracer_long_name/0 +0 -0
  27. roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/tracer_unit/.zarray +20 -0
  28. roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/tracer_unit/.zattrs +6 -0
  29. roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/tracer_unit/0 +0 -0
  30. roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/.zattrs +1 -2
  31. roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/.zmetadata +27 -5
  32. roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/ntides/.zarray +20 -0
  33. roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/ntides/.zattrs +5 -0
  34. roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/ntides/0 +0 -0
  35. roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/omega/.zattrs +1 -3
  36. roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/pot_Im/0.0.0 +0 -0
  37. roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/pot_Re/0.0.0 +0 -0
  38. roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/ssh_Im/0.0.0 +0 -0
  39. roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/ssh_Re/0.0.0 +0 -0
  40. roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/u_Im/0.0.0 +0 -0
  41. roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/u_Re/0.0.0 +0 -0
  42. roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/v_Im/0.0.0 +0 -0
  43. roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/v_Re/0.0.0 +0 -0
  44. roms_tools/tests/test_setup/test_datasets.py +103 -1
  45. roms_tools/tests/test_setup/test_tides.py +112 -47
  46. roms_tools/utils.py +115 -1
  47. {roms_tools-2.6.2.dist-info → roms_tools-2.7.0.dist-info}/METADATA +1 -1
  48. {roms_tools-2.6.2.dist-info → roms_tools-2.7.0.dist-info}/RECORD +51 -33
  49. {roms_tools-2.6.2.dist-info → roms_tools-2.7.0.dist-info}/WHEEL +1 -1
  50. {roms_tools-2.6.2.dist-info → roms_tools-2.7.0.dist-info}/licenses/LICENSE +0 -0
  51. {roms_tools-2.6.2.dist-info → roms_tools-2.7.0.dist-info}/top_level.txt +0 -0
@@ -7,12 +7,83 @@ from pathlib import Path
7
7
  from conftest import calculate_data_hash
8
8
 
9
9
 
10
- @pytest.fixture
11
- def grid_that_lies_within_bounds_of_regional_tpxo_data():
10
+ @pytest.fixture(scope="session")
11
+ def tidal_forcing_9v5a(use_dask):
12
+
12
13
  grid = Grid(
13
14
  nx=3, ny=3, size_x=1500, size_y=1500, center_lon=235, center_lat=25, rot=-20
14
15
  )
15
- return grid
16
+ fname_grid = Path(download_test_data("regional_grid_tpxo9v5a.nc"))
17
+ fname_h = Path(download_test_data("regional_h_tpxo9v5a.nc"))
18
+ fname_u = Path(download_test_data("regional_u_tpxo9v5a.nc"))
19
+ fname_dict = {"grid": fname_grid, "h": fname_h, "u": fname_u}
20
+
21
+ return TidalForcing(
22
+ grid=grid,
23
+ source={"name": "TPXO", "path": fname_dict},
24
+ ntides=1,
25
+ use_dask=use_dask,
26
+ )
27
+
28
+
29
+ @pytest.fixture(scope="session")
30
+ def tidal_forcing_10v2a(use_dask):
31
+
32
+ grid = Grid(
33
+ nx=3, ny=3, size_x=1500, size_y=1500, center_lon=235, center_lat=25, rot=-20
34
+ )
35
+ fname_grid = Path(download_test_data("regional_grid_tpxo10v2a.nc"))
36
+ fname_h = Path(download_test_data("regional_h_tpxo10v2a.nc"))
37
+ fname_u = Path(download_test_data("regional_u_tpxo10v2a.nc"))
38
+ fname_dict = {"grid": fname_grid, "h": fname_h, "u": fname_u}
39
+
40
+ return TidalForcing(
41
+ grid=grid,
42
+ source={"name": "TPXO", "path": fname_dict},
43
+ ntides=1,
44
+ use_dask=use_dask,
45
+ )
46
+
47
+
48
+ @pytest.fixture(scope="session")
49
+ def tidal_forcing_from_global_data(use_dask):
50
+
51
+ grid = Grid(
52
+ nx=3, ny=3, size_x=1800, size_y=1500, center_lon=235, center_lat=25, rot=-20
53
+ )
54
+
55
+ fname_grid = Path(download_test_data("global_grid_tpxo10.v2.nc"))
56
+ fname_h = Path(download_test_data("global_h_tpxo10.v2.nc"))
57
+ fname_u = Path(download_test_data("global_u_tpxo10.v2.nc"))
58
+ fname_dict = {"grid": fname_grid, "h": fname_h, "u": fname_u}
59
+
60
+ return TidalForcing(
61
+ grid=grid,
62
+ source={"name": "TPXO", "path": fname_dict},
63
+ ntides=1,
64
+ use_dask=use_dask,
65
+ )
66
+
67
+
68
+ @pytest.mark.parametrize(
69
+ "tidal_forcing_fixture",
70
+ ["tidal_forcing", "tidal_forcing_9v5a", "tidal_forcing_10v2a"], # 10v2
71
+ )
72
+ def test_successful_initialization(tidal_forcing_fixture, request, use_dask):
73
+ tidal_forcing = request.getfixturevalue(tidal_forcing_fixture)
74
+
75
+ assert isinstance(tidal_forcing.ds, xr.Dataset)
76
+ assert "omega" in tidal_forcing.ds
77
+ assert "ssh_Re" in tidal_forcing.ds
78
+ assert "ssh_Im" in tidal_forcing.ds
79
+ assert "pot_Re" in tidal_forcing.ds
80
+ assert "pot_Im" in tidal_forcing.ds
81
+ assert "u_Re" in tidal_forcing.ds
82
+ assert "u_Im" in tidal_forcing.ds
83
+ assert "v_Re" in tidal_forcing.ds
84
+ assert "v_Im" in tidal_forcing.ds
85
+
86
+ assert tidal_forcing.ntides == 1
16
87
 
17
88
 
18
89
  @pytest.fixture
@@ -59,7 +130,6 @@ def grid_that_straddles_180_degree_meridian():
59
130
  @pytest.mark.parametrize(
60
131
  "grid_fixture",
61
132
  [
62
- "grid_that_lies_within_bounds_of_regional_tpxo_data",
63
133
  "grid_that_is_out_of_bounds_of_regional_tpxo_data",
64
134
  "grid_that_straddles_dateline",
65
135
  "grid_that_straddles_180_degree_meridian",
@@ -67,39 +137,17 @@ def grid_that_straddles_180_degree_meridian():
67
137
  )
68
138
  def test_successful_initialization_with_global_data(grid_fixture, request, use_dask):
69
139
 
70
- fname = Path(download_test_data("TPXO_global_test_data.nc"))
140
+ fname_grid = Path(download_test_data("global_grid_tpxo10.v2.nc"))
141
+ fname_h = Path(download_test_data("global_h_tpxo10.v2.nc"))
142
+ fname_u = Path(download_test_data("global_u_tpxo10.v2.nc"))
143
+ fname_dict = {"grid": fname_grid, "h": fname_h, "u": fname_u}
71
144
 
72
145
  grid = request.getfixturevalue(grid_fixture)
73
146
 
74
147
  tidal_forcing = TidalForcing(
75
- grid=grid, source={"name": "TPXO", "path": fname}, ntides=2, use_dask=use_dask
76
- )
77
-
78
- assert isinstance(tidal_forcing.ds, xr.Dataset)
79
- assert "omega" in tidal_forcing.ds
80
- assert "ssh_Re" in tidal_forcing.ds
81
- assert "ssh_Im" in tidal_forcing.ds
82
- assert "pot_Re" in tidal_forcing.ds
83
- assert "pot_Im" in tidal_forcing.ds
84
- assert "u_Re" in tidal_forcing.ds
85
- assert "u_Im" in tidal_forcing.ds
86
- assert "v_Re" in tidal_forcing.ds
87
- assert "v_Im" in tidal_forcing.ds
88
-
89
- assert tidal_forcing.source == {"name": "TPXO", "path": fname}
90
- assert tidal_forcing.ntides == 2
91
-
92
-
93
- def test_successful_initialization_with_regional_data(
94
- grid_that_lies_within_bounds_of_regional_tpxo_data, use_dask
95
- ):
96
-
97
- fname = Path(download_test_data("TPXO_regional_test_data.nc"))
98
-
99
- tidal_forcing = TidalForcing(
100
- grid=grid_that_lies_within_bounds_of_regional_tpxo_data,
101
- source={"name": "TPXO", "path": fname},
102
- ntides=10,
148
+ grid=grid,
149
+ source={"name": "TPXO", "path": fname_dict},
150
+ ntides=1,
103
151
  use_dask=use_dask,
104
152
  )
105
153
 
@@ -114,20 +162,22 @@ def test_successful_initialization_with_regional_data(
114
162
  assert "v_Re" in tidal_forcing.ds
115
163
  assert "v_Im" in tidal_forcing.ds
116
164
 
117
- assert tidal_forcing.source == {"name": "TPXO", "path": fname}
118
- assert tidal_forcing.ntides == 10
165
+ assert tidal_forcing.ntides == 1
119
166
 
120
167
 
121
168
  def test_unsuccessful_initialization_with_regional_data_due_to_nans(
122
169
  grid_that_is_out_of_bounds_of_regional_tpxo_data, use_dask
123
170
  ):
124
171
 
125
- fname = Path(download_test_data("TPXO_regional_test_data.nc"))
172
+ fname_grid = Path(download_test_data("regional_grid_tpxo10v2.nc"))
173
+ fname_h = Path(download_test_data("regional_h_tpxo10v2.nc"))
174
+ fname_u = Path(download_test_data("regional_u_tpxo10v2.nc"))
175
+ fname_dict = {"grid": fname_grid, "h": fname_h, "u": fname_u}
126
176
 
127
177
  with pytest.raises(ValueError, match="NaN values found"):
128
178
  TidalForcing(
129
179
  grid=grid_that_is_out_of_bounds_of_regional_tpxo_data,
130
- source={"name": "TPXO", "path": fname},
180
+ source={"name": "TPXO", "path": fname_dict},
131
181
  ntides=10,
132
182
  use_dask=use_dask,
133
183
  )
@@ -141,7 +191,10 @@ def test_unsuccessful_initialization_with_regional_data_due_to_no_overlap(
141
191
  grid_fixture, request, use_dask
142
192
  ):
143
193
 
144
- fname = Path(download_test_data("TPXO_regional_test_data.nc"))
194
+ fname_grid = Path(download_test_data("regional_grid_tpxo10v2.nc"))
195
+ fname_h = Path(download_test_data("regional_h_tpxo10v2.nc"))
196
+ fname_u = Path(download_test_data("regional_u_tpxo10v2.nc"))
197
+ fname_dict = {"grid": fname_grid, "h": fname_h, "u": fname_u}
145
198
 
146
199
  grid = request.getfixturevalue(grid_fixture)
147
200
 
@@ -150,7 +203,7 @@ def test_unsuccessful_initialization_with_regional_data_due_to_no_overlap(
150
203
  ):
151
204
  TidalForcing(
152
205
  grid=grid,
153
- source={"name": "TPXO", "path": fname},
206
+ source={"name": "TPXO", "path": fname_dict},
154
207
  ntides=10,
155
208
  use_dask=use_dask,
156
209
  )
@@ -158,12 +211,15 @@ def test_unsuccessful_initialization_with_regional_data_due_to_no_overlap(
158
211
 
159
212
  def test_insufficient_number_of_consituents(grid_that_straddles_dateline, use_dask):
160
213
 
161
- fname = Path(download_test_data("TPXO_global_test_data.nc"))
214
+ fname_grid = Path(download_test_data("global_grid_tpxo10.v2.nc"))
215
+ fname_h = Path(download_test_data("global_h_tpxo10.v2.nc"))
216
+ fname_u = Path(download_test_data("global_u_tpxo10.v2.nc"))
217
+ fname_dict = {"grid": fname_grid, "h": fname_h, "u": fname_u}
162
218
 
163
- with pytest.raises(ValueError, match="The dataset contains fewer"):
219
+ with pytest.raises(ValueError, match="The dataset contains tidal"):
164
220
  TidalForcing(
165
221
  grid=grid_that_straddles_dateline,
166
- source={"name": "TPXO", "path": fname},
222
+ source={"name": "TPXO", "path": fname_dict},
167
223
  ntides=10,
168
224
  use_dask=use_dask,
169
225
  )
@@ -194,10 +250,16 @@ def test_tidal_forcing_save(tidal_forcing, tmp_path):
194
250
  filepath.unlink()
195
251
 
196
252
 
197
- def test_roundtrip_yaml(tidal_forcing, tmp_path, use_dask):
253
+ @pytest.mark.parametrize(
254
+ "tidal_forcing_fixture",
255
+ ["tidal_forcing", "tidal_forcing_from_global_data"],
256
+ )
257
+ def test_roundtrip_yaml(tidal_forcing_fixture, tmp_path, use_dask, request):
198
258
  """Test that creating a TidalForcing object, saving its parameters to yaml file, and
199
259
  re-opening yaml file creates the same object."""
200
260
 
261
+ tidal_forcing = request.getfixturevalue(tidal_forcing_fixture)
262
+
201
263
  # Create a temporary filepath using the tmp_path fixture
202
264
  file_str = "test_yaml"
203
265
  for filepath in [
@@ -215,15 +277,18 @@ def test_roundtrip_yaml(tidal_forcing, tmp_path, use_dask):
215
277
  filepath.unlink()
216
278
 
217
279
 
218
- def test_files_have_same_hash(tidal_forcing, tmp_path, use_dask):
280
+ @pytest.mark.parametrize(
281
+ "tidal_forcing_fixture",
282
+ ["tidal_forcing", "tidal_forcing_from_global_data"],
283
+ )
284
+ def test_files_have_same_hash(tidal_forcing_fixture, tmp_path, use_dask, request):
285
+
286
+ tidal_forcing = request.getfixturevalue(tidal_forcing_fixture)
219
287
 
220
288
  yaml_filepath = tmp_path / "test_yaml.yaml"
221
289
  filepath1 = tmp_path / "test1.nc"
222
290
  filepath2 = tmp_path / "test2.nc"
223
291
 
224
- print(yaml_filepath)
225
- print(filepath1)
226
- print(filepath2)
227
292
  tidal_forcing.to_yaml(yaml_filepath)
228
293
  tidal_forcing.save(filepath1)
229
294
  tidal_forcing_from_file = TidalForcing.from_yaml(yaml_filepath, use_dask=use_dask)
roms_tools/utils.py CHANGED
@@ -1,4 +1,5 @@
1
1
  import xarray as xr
2
+ import numpy as np
2
3
  from pathlib import Path
3
4
  import re
4
5
  import glob
@@ -153,7 +154,7 @@ def _load_data(
153
154
 
154
155
  # Rechunk the dataset along the tidal constituent dimension ("ntides") after loading
155
156
  # because the original dataset does not have a chunk size of 1 along this dimension.
156
- if "ntides" in dim_names:
157
+ if "ntides" in dim_names and "ntides" in ds.dims:
157
158
  ds = ds.chunk({dim_names["ntides"]: 1})
158
159
 
159
160
  else:
@@ -371,3 +372,116 @@ def get_dask_chunks(location, chunk_size):
371
372
  "v": {"eta_v": chunk_size, "xi_rho": chunk_size},
372
373
  }
373
374
  return chunk_mapping.get(location, {})
375
+
376
+
377
+ def _generate_coordinate_range(min, max, resolution):
378
+ """Generate an array of target coordinates (e.g., latitude or longitude) within a
379
+ specified range, with a resolution that is rounded to the nearest value of the form
380
+ `1/n` (or integer).
381
+
382
+ This method generates an array of target coordinates between the provided `min` and `max`
383
+ values, ensuring that both `min` and `max` are included in the resulting range. The resolution
384
+ is rounded to the nearest fraction of the form `1/n` or an integer, based on the input.
385
+
386
+ Parameters
387
+ ----------
388
+ min : float
389
+ The minimum value (in degrees) of the coordinate range (inclusive).
390
+
391
+ max : float
392
+ The maximum value (in degrees) of the coordinate range (inclusive).
393
+
394
+ resolution : float
395
+ The spacing (in degrees) between each coordinate in the array. The resolution will
396
+ be rounded to the nearest value of the form `1/n` or an integer, depending on the size
397
+ of the resolution value.
398
+
399
+ Returns
400
+ -------
401
+ numpy.ndarray
402
+ An array of target coordinates generated from the specified range, with the resolution
403
+ rounded to a suitable fraction (e.g., `1/n`) or integer, depending on the input resolution.
404
+ """
405
+
406
+ # Find the closest fraction of the form 1/n or integer to match the resolution
407
+ resolution_rounded = None
408
+ min_diff = float("inf") # Initialize the minimum difference as infinity
409
+
410
+ # Search for the best fraction or integer approximation to the resolution
411
+ for n in range(1, 1000): # Try fractions 1/n, where n ranges from 1 to 999
412
+ if resolution <= 1:
413
+ fraction = (
414
+ 1 / n
415
+ ) # For small resolutions (<= 1), consider fractions of the form 1/n
416
+ else:
417
+ fraction = n # For larger resolutions (>1), consider integers (n)
418
+
419
+ diff = abs(
420
+ fraction - resolution
421
+ ) # Calculate the difference between the fraction and the resolution
422
+
423
+ if diff < min_diff: # If the current fraction is a better approximation
424
+ min_diff = diff
425
+ resolution_rounded = fraction # Update the best fraction (or integer) found
426
+
427
+ # Adjust the start and end of the range to include integer values
428
+ start_int = np.floor(min) # Round the minimum value down to the nearest integer
429
+ end_int = np.ceil(max) # Round the maximum value up to the nearest integer
430
+
431
+ # Generate the array of target coordinates, including both the min and max values
432
+ target = np.arange(start_int, end_int + resolution_rounded, resolution_rounded)
433
+
434
+ # Truncate any values that exceed max (including small floating point errors)
435
+ target = target[target <= end_int + 1e-10]
436
+
437
+ return target.astype(np.float32)
438
+
439
+
440
+ def _remove_edge_nans(field, xdim, layer_depth=None):
441
+ """Trim NaN-only edges along a specified dimension.
442
+
443
+ Useful when a ROMS grid has been regridded to a fixed lat/lon section,
444
+ leaving NaN-filled edges (e.g., over land or outside the domain).
445
+ Removes leading/trailing slices along `xdim` where all values are NaN,
446
+ based on `field` or optionally `layer_depth`.
447
+
448
+ Parameters
449
+ ----------
450
+ field : xr.DataArray
451
+ Data to trim.
452
+ xdim : str
453
+ Dimension along which to remove NaN edges.
454
+ layer_depth : xr.DataArray, optional
455
+ Optional field to determine where NaNs occur.
456
+
457
+ Returns
458
+ -------
459
+ field : xr.DataArray
460
+ Trimmed data.
461
+ layer_depth : xr.DataArray or None
462
+ Trimmed `layer_depth` if provided.
463
+ """
464
+ if xdim in field.dims:
465
+ if layer_depth is not None:
466
+ nan_mask = layer_depth.isnull().sum(
467
+ dim=[dim for dim in layer_depth.dims if dim != xdim]
468
+ )
469
+ else:
470
+ nan_mask = field.isnull().sum(
471
+ dim=[dim for dim in field.dims if dim != xdim]
472
+ )
473
+
474
+ # Find the valid indices where the sum of the nans is 0
475
+ valid_indices = np.where(nan_mask.values == 0)[0]
476
+
477
+ if len(valid_indices) > 0:
478
+ first_valid = valid_indices[0]
479
+ last_valid = valid_indices[-1]
480
+
481
+ field = field.isel({xdim: slice(first_valid, last_valid + 1)})
482
+ if layer_depth is not None:
483
+ layer_depth = layer_depth.isel(
484
+ {xdim: slice(first_valid, last_valid + 1)}
485
+ )
486
+
487
+ return field, layer_depth
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: roms-tools
3
- Version: 2.6.2
3
+ Version: 2.7.0
4
4
  Summary: Tools for running and analysing UCLA-ROMS simulations
5
5
  Author-email: Nora Loose <nora.loose@gmail.com>, Thomas Nicholas <tom@cworthy.org>
6
6
  License: Apache-2
@@ -1,40 +1,43 @@
1
1
  ci/environment-with-xesmf.yml,sha256=c8x2YFBBpZvy6pnlUMTO1-8myyKsVm0Y-IWPigT3PKo,217
2
2
  ci/environment.yml,sha256=Ehxy6nYiVQXoS7EGlmNm2G0ZPHg6VFBGY1IflApIhIY,207
3
- roms_tools/__init__.py,sha256=jRghiteCoPjJvJjkFI36ocGyqzcTN5m-5eCa_DNQ9Dw,988
4
- roms_tools/download.py,sha256=eOwuI7I2FtHNuMsoHNMr2yCeQhR3ItyVGjml0gO9XrA,6360
5
- roms_tools/plot.py,sha256=33ft1wN0kc_vIvyy_sIoY-nc0k4THXWLc_k7wEavNq8,17578
3
+ roms_tools/__init__.py,sha256=l6oRDJLsmaGAe43x2gJigqZ4pXwvzrwD_uVtGtEeGgM,1064
4
+ roms_tools/constants.py,sha256=2n6CPwn716ekBxe7oZeYtY_9NV1Nkn8h7NI2nwqjHWo,121
5
+ roms_tools/download.py,sha256=czea1KanC0smU0ZQ1dXSe_aACkr1dO5nVoJBMdBr6jA,8373
6
+ roms_tools/plot.py,sha256=YJUiGB7YeN725wJbE2hExWhvHHW_opwf1GU_bzboC7k,18094
6
7
  roms_tools/regrid.py,sha256=av9fROSNxlDeczOB544zUjFRUTiUKO42wbfZ90mpuD0,10476
7
- roms_tools/utils.py,sha256=eveBkWuDsXNJADFMWFgRMHdbXkZlTyVK9dN2YAnjYJ4,13323
8
+ roms_tools/utils.py,sha256=3iTBnedy4ZPwH8fVXnCjdQSqkObzklWwLcw-byUj21I,17752
8
9
  roms_tools/vertical_coordinate.py,sha256=uIxZl7rwY-fSCqXWhm6TXrOsLK4pMOMXOZB8VuP9xwg,7253
9
- roms_tools/analysis/roms_output.py,sha256=DUSmT2YRoqd1fowuPnoCxdukuO_NC3ONphMWsu43_nE,36560
10
- roms_tools/analysis/utils.py,sha256=K1Z1VyZUWKth1GMT8dumE1uUVcxrcO6rAm0Yfh8DtIg,7207
10
+ roms_tools/analysis/roms_output.py,sha256=GdHH_v3V7HhIHUk8JrqGXywV0t_VPgjfR1N_EU-hy7w,33814
11
+ roms_tools/analysis/utils.py,sha256=BfpLIt2nYYlXqmPTVMDM_Hh1rDmjVcEwStJaWT_N_NY,4434
11
12
  roms_tools/setup/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
13
  roms_tools/setup/boundary_forcing.py,sha256=kHH7jfGZOiUIpk9BVEQqzSqQ10WUFZWlu8BcEV0LkYY,44173
13
- roms_tools/setup/datasets.py,sha256=yjXXv2jJuHwuIkq-GcrheWEES7SZhKxwRn7J75xFfA8,82305
14
+ roms_tools/setup/cdr_forcing.py,sha256=OAKsWmhPE4bMv5M_odT7xK1M9MPi2OxStWSaCZfk4FM,42952
15
+ roms_tools/setup/datasets.py,sha256=xWLLuuSRSbkp4kf9FNFWPcpFUwfD4cZY69ve8LmgIg8,106383
14
16
  roms_tools/setup/fill.py,sha256=YQes_9uADZ-XZ6dBqXyvG7OAp7UrWhX-p3pR1gD6Od4,11120
15
- roms_tools/setup/grid.py,sha256=DWNPXoG2D76u6QMjOf_f5byvzGXT8gFOfiantUvnVjg,49408
17
+ roms_tools/setup/grid.py,sha256=h-CHrZTM4E6-hihLRip7a2u5w3OAoJwcmK_1ewlHPKU,50943
16
18
  roms_tools/setup/initial_conditions.py,sha256=0_roVivlbuKvV82QhxIpYAzfsTNutiQBVVW8xLm_O98,37490
17
19
  roms_tools/setup/mask.py,sha256=IK2SrVnMJwZjE4jNFtzMQhp1c5c8SUO45OIpCIrNSis,3413
18
20
  roms_tools/setup/nesting.py,sha256=j8l2zVCfhxNNtN4ZiSpipSlPXYmaoZWIPw6zImafsuk,26511
19
- roms_tools/setup/river_forcing.py,sha256=LEupw0opBJmQYy7yPQZ7ijWRFc2LpBx0l-tQ17y2Frk,32992
21
+ roms_tools/setup/river_forcing.py,sha256=wrWucS9Y5ovKvSHMhodhngNBxtuu-ABHsfOP9nJ8hE4,30682
20
22
  roms_tools/setup/surface_forcing.py,sha256=Q5WBsZN0_HAB-x9vDAl6PEDg4CPKUFK7HO38zxT-h6c,24583
21
- roms_tools/setup/tides.py,sha256=2eFzQMVnlcHsG83AEhTUfGgQbO0CqI_pDb8YeZ5APTU,27088
23
+ roms_tools/setup/tides.py,sha256=hILYCwbyIomdVHeFIaNmJYTLdptOiSDaP1ETcTysePg,16934
22
24
  roms_tools/setup/topography.py,sha256=s1dSF0ZWCNdrZ25yv-pUcCgufxRmGgy3yr_VhdRM7LU,14126
23
- roms_tools/setup/utils.py,sha256=7yGt_Wu3NSGAiLXIXlaOh7NsiCJrei5wSkk2vwlW0hg,47851
25
+ roms_tools/setup/utils.py,sha256=h9emhPknoH3ezm0lZriK-gsLQWem3CjsknWFzkdPwTU,53415
24
26
  roms_tools/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
25
27
  roms_tools/tests/test_regrid.py,sha256=-wzZ31BkUdSn81jq5NF1wnuaBRfd0aiYgQZEv5E_h9w,4682
26
28
  roms_tools/tests/test_vertical_coordinate.py,sha256=4D2jruuxBwUYk1fSeaJKICgSjzpixhjd03Y4lyivMkQ,2348
27
29
  roms_tools/tests/test_analysis/test_roms_output.py,sha256=EtxS9b5JHoREch99jbhs4QDg_3zmXDmVzXplbVrFocA,18811
28
30
  roms_tools/tests/test_setup/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
29
31
  roms_tools/tests/test_setup/test_boundary_forcing.py,sha256=mgRcSPoqEJwaRML3iYADGUdSe-XlUXCXHM1I9ZWI7lA,23241
30
- roms_tools/tests/test_setup/test_datasets.py,sha256=sKaBnD4bGZaRHuRdh76_NXTKGJ682vkFMcVxav0qtsE,16513
32
+ roms_tools/tests/test_setup/test_cdr_forcing.py,sha256=hT77F5yG5LOGVOJgztE4lnHCHnigaNvmF6Wp7M6GKt0,27999
33
+ roms_tools/tests/test_setup/test_datasets.py,sha256=-8fpDXwVBKhJfGXwmJ2n73cLAvXOUtS6gTAz-7L7T8U,20213
31
34
  roms_tools/tests/test_setup/test_fill.py,sha256=gDHuM58d3ECQE317ZntChYt4hWCfo4eVhkW13NiZ1V4,3735
32
35
  roms_tools/tests/test_setup/test_grid.py,sha256=e1S8TYt21TVczaEfyeYoAU-qxUhAgiugkHA3EDAGtIQ,14095
33
36
  roms_tools/tests/test_setup/test_initial_conditions.py,sha256=tSwxdyJjpHgsT_rqjNbwTPYFB7ahwVx-jfk8kEEBbTw,17755
34
37
  roms_tools/tests/test_setup/test_nesting.py,sha256=WUhyP9mlMYwAJQgbgqjEU1zOyb8QD3XMgSZvHR_9LE8,18764
35
38
  roms_tools/tests/test_setup/test_river_forcing.py,sha256=-VizUlLbhRTHAEoghgnp1bHG-6nHODLZXeLr0HjpZ68,23915
36
39
  roms_tools/tests/test_setup/test_surface_forcing.py,sha256=rf4x1k6wvMr4r8hbapnEKiAgGvPeeAtbuSeaTs9qd78,28168
37
- roms_tools/tests/test_setup/test_tides.py,sha256=ACFXytda3Am984QMKGxtML00KPX1LvLWlSL0FpZTqyc,8085
40
+ roms_tools/tests/test_setup/test_tides.py,sha256=4_nux4mCDGsgkzCpiilS_4A_Tfv9creN8cMquZRvFlc,10545
38
41
  roms_tools/tests/test_setup/test_topography.py,sha256=EAF-zCHfo6XnXQfBTrSZLuZDVzegWHHlrf9oBmvY0hM,4963
39
42
  roms_tools/tests/test_setup/test_utils.py,sha256=hvFsZqZgYiV8drkCvDNp02wBhFT3PuxfoWf3Kfskc2w,2246
40
43
  roms_tools/tests/test_setup/test_validation.py,sha256=3dZUSq64dOAlrV4NsvW-YaxIsqAzQvPp7gWAL9DeIrM,3764
@@ -1522,7 +1525,7 @@ roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_c
1522
1525
  roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/zooC/0.0.0.0,sha256=rbMsZDg52rK24fM83EmNrUNK5n2wZMVtvBGb3_IdXXk,114
1523
1526
  roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/.zattrs,sha256=RBNvo1WzZ4oRRq0W9-hknpT7T8If536DEMBg9hyq_4o,2
1524
1527
  roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/.zgroup,sha256=I4N0bme0vMJ2Kz8QDwbD-i1fFJq1qOXaXTNSFGSgGVk,24
1525
- roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/.zmetadata,sha256=In_g5GnzfA6PuEF_R1gpOjUCzXGuy8xWWIahgpsP7PQ,6878
1528
+ roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/.zmetadata,sha256=gNnLeSKplgVHJ728VS7NH5WgL4uzyw45pQ_HiCao4pU,8238
1526
1529
  roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/abs_time/.zarray,sha256=AVrYaEeCVeJWUi2FbvisrHwjFyifr4Vt3Yag7Q-n33g,312
1527
1530
  roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/abs_time/.zattrs,sha256=0hG3RGr8ZCkuViKEvgrkYvnehkAk3wndb4vesT1jYeI,177
1528
1531
  roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/abs_time/0,sha256=PvO30V_gimagXglEZjQSDgwcOrEIoWmt9JQbY4toiic,48
@@ -1542,17 +1545,23 @@ roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/river_ti
1542
1545
  roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/river_time/.zattrs,sha256=J7nokRiI2EVd2gRefz4l56w6Oe3stuKlZJUFtF-1al4,144
1543
1546
  roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/river_time/0,sha256=VV59hFYdbxNuBU2T_3158lNQqvL5DfHdLAAu8sQS7-Q,48
1544
1547
  roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/river_tracer/.zarray,sha256=k-V4JNHxRVz6GafZo4igAGug5unYJOftJe9lXdKEhNc,357
1545
- roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/river_tracer/.zattrs,sha256=o8k0oep_jy_IBnSN5uhlY8-xASorsBQUvI6U6sj-iek,187
1548
+ roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/river_tracer/.zattrs,sha256=o8-S5Hh1BlOWs3LZ2H3l5noUxb03Eeg7Tj1Fr64ESas,216
1546
1549
  roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/river_tracer/0.0.0,sha256=tYap192OPUHsMe2PkkMd2yRQXMSf1deDMbKXPmk6Cxg,73
1547
1550
  roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/river_volume/.zarray,sha256=GhgCOinMwfsGOnrm2fpUYPZCCKqM4BZusRqx1KPD6fU,335
1548
1551
  roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/river_volume/.zattrs,sha256=wF9swMjdadnDG7-CaNW8qKmlUVj_djCX2Nb7qzkGemQ,177
1549
1552
  roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/river_volume/0.0,sha256=QvezIP43sAUYcf8S5NYjEmll2P_sdRzpCox-I9_aiaQ,112
1553
+ roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/tracer_long_name/.zarray,sha256=gXh-y4G__OX1bdJtHvfgREEEQXRpD-JhGx-jjy_QBOA,313
1554
+ roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/tracer_long_name/.zattrs,sha256=RyfTxeh2VQFfbrWgUn3PeKleAvMjoQ8iWjAovKNp-Bo,92
1555
+ roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/tracer_long_name/0,sha256=bai-Sz7-fTehZiuGcXARwyXn8pewRKGGEui6av4FcQQ,170
1550
1556
  roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/tracer_name/.zarray,sha256=QqQTrhjNiBCbseqzkDyBxrkQLsMIJNAV9RW72cwRH0w,312
1551
1557
  roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/tracer_name/.zattrs,sha256=wN1vEaPGU1JcLCImGENU-e6Ix7G1mu-sw3P3THVQZ7A,87
1552
1558
  roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/tracer_name/0,sha256=m5RTy6Ka6ScsKdL_pma6qpevroqCf8LJzuYXCFl9Mds,48
1559
+ roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/tracer_unit/.zarray,sha256=hgnVN9U-gRIumI9-q5JtjayksxbdPqqJ_U12V-Wkq5E,313
1560
+ roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/tracer_unit/.zattrs,sha256=p1CV8O4FD0nhNlKnchhUi0yoxs5C_LO720EgweJgrCQ,87
1561
+ roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/tracer_unit/0,sha256=tGuBGnOtG8JuTHrnfV6m42IxxhvkqqJcWF9UOz0BcsM,136
1553
1562
  roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/.zattrs,sha256=jFoQJqWC46fw5uLFNg8B7WYcGSGnc9XJAWTk3ZKejOY,29
1554
1563
  roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/.zgroup,sha256=I4N0bme0vMJ2Kz8QDwbD-i1fFJq1qOXaXTNSFGSgGVk,24
1555
- roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/.zmetadata,sha256=kRWFhVI-Iwt06JQ_VG-Dnqj2FdgOcEybrdjLt3EZ4j8,7638
1564
+ roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/.zmetadata,sha256=a7KFM7x96_6qZS5BsxKEHmL1B1TaunNEde6RBlplc4k,9002
1556
1565
  roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/abs_time/.zarray,sha256=bRSAng1vaRGTtFKNWhv1GcxwVKYhRsJnjbtncEbdWNA,314
1557
1566
  roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/abs_time/.zattrs,sha256=gDDHVjAFysUhH72DUxR7UwPLMOXFxalOA1fCWa6ImCQ,177
1558
1567
  roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/abs_time/0,sha256=SZIHK8deA_aE9wtgz1iLQ8ybjbVQK4Ym1FEsVryztu0,112
@@ -1575,14 +1584,20 @@ roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_time/.za
1575
1584
  roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_time/.zattrs,sha256=_mr3WpUrqvQh_z8OkdijrEoCwLj47Oightno_JgPwtY,172
1576
1585
  roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_time/0,sha256=P_O8S4zgVtxT-DP893R42qoA5iJIIB-FC2dSw7mNu_s,112
1577
1586
  roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_tracer/.zarray,sha256=4Isc0Ety5rIupAzavr-EG8fY2C9P4Jxyp_-2NYEBUKQ,361
1578
- roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_tracer/.zattrs,sha256=u98R60u_rDq8KBVfI9ltznlt67hWbJEka2egeVOvVMY,193
1587
+ roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_tracer/.zattrs,sha256=lkp5oiE6WCviah9N4Kp8LyAUAz7MOhR0nf5Te9JJVnI,222
1579
1588
  roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_tracer/0.0.0,sha256=xo6kYtQViGmUufHX-8RirKlGjxq11f6f7QN7sEGGpLM,160
1580
1589
  roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_volume/.zarray,sha256=0EIULiiBUSrg48SznfckxE_SZYfnkktKoXzo6o51Gwk,337
1581
1590
  roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_volume/.zattrs,sha256=xddPI1cBVtjZXwnxDy2tg8Or2Ie7uvcM9OEJKc7G9sY,183
1582
1591
  roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_volume/0.0,sha256=kHE275vA_K5agANjAsdDVazkJRXl5LjWUyXIyFsgeEU,302
1592
+ roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/tracer_long_name/.zarray,sha256=iBqjS3o0pPe7DY3YUO_O1-TnoAzlDA9zW3dE4Uz9i9Q,315
1593
+ roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/tracer_long_name/.zattrs,sha256=RyfTxeh2VQFfbrWgUn3PeKleAvMjoQ8iWjAovKNp-Bo,92
1594
+ roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/tracer_long_name/0,sha256=W4TV8gJnpQ2ZFuB8JV5-V3qDN5H4IgLKgr354bvYMXA,1228
1583
1595
  roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/tracer_name/.zarray,sha256=QjU7SiseoLdUl2YDQy7dhjTkwNv5XOx0Tn9V8B8tRZU,315
1584
1596
  roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/tracer_name/.zattrs,sha256=wN1vEaPGU1JcLCImGENU-e6Ix7G1mu-sw3P3THVQZ7A,87
1585
1597
  roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/tracer_name/0,sha256=Ly1aLvTbSQJa2zVp1IzT3eIng1fPC9b2sINiQHgjoPM,302
1598
+ roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/tracer_unit/.zarray,sha256=4eWMRuJP39qkwdzO0xfA84REMZx4ux-_l_Oee0rRwh4,315
1599
+ roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/tracer_unit/.zattrs,sha256=p1CV8O4FD0nhNlKnchhUi0yoxs5C_LO720EgweJgrCQ,87
1600
+ roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/tracer_unit/0,sha256=KXGjlWnIWA92xF09hBEdCnD5o_4qwob6lXTFSjHzJJw,273
1586
1601
  roms_tools/tests/test_setup/test_data/surface_forcing.zarr/.zattrs,sha256=ezQ198RqbC3lhq6KCjYuviNNomeYUJZiIQrpp_vfyLw,354
1587
1602
  roms_tools/tests/test_setup/test_data/surface_forcing.zarr/.zgroup,sha256=I4N0bme0vMJ2Kz8QDwbD-i1fFJq1qOXaXTNSFGSgGVk,24
1588
1603
  roms_tools/tests/test_setup/test_data/surface_forcing.zarr/.zmetadata,sha256=ZhllbfB16Vy9rKPrfncMVk49HDSKFjQyHM0O0inCzbo,7950
@@ -1613,40 +1628,43 @@ roms_tools/tests/test_setup/test_data/surface_forcing.zarr/uwnd/0.0.0,sha256=y33
1613
1628
  roms_tools/tests/test_setup/test_data/surface_forcing.zarr/vwnd/.zarray,sha256=3NmD3p3PP_3N6URTn_uBF54Ifqf6cmYUyibmWwxpohM,357
1614
1629
  roms_tools/tests/test_setup/test_data/surface_forcing.zarr/vwnd/.zattrs,sha256=Gts2eeNE9fFfMA5fdJ7Nsvhe6Ki8ITZRrmwKedV02Ao,188
1615
1630
  roms_tools/tests/test_setup/test_data/surface_forcing.zarr/vwnd/0.0.0,sha256=OuP8dy5b_Cq0FhQij6el5TS3MGv39zJDAsJKCloDZKs,408
1616
- roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/.zattrs,sha256=eSGuZai4MuFT-0ls6scZUA96zIpRd19knT1qKeOKt6E,203
1631
+ roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/.zattrs,sha256=3zHGJR56QEasw14063X0UjlJfLlsRKpGUhRDugmui_o,172
1617
1632
  roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/.zgroup,sha256=I4N0bme0vMJ2Kz8QDwbD-i1fFJq1qOXaXTNSFGSgGVk,24
1618
- roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/.zmetadata,sha256=JxuMF2-tbq6SZ9EWJJgmA-GGMO7A0-ths7jHO8ONZ-4,7940
1633
+ roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/.zmetadata,sha256=FG-laVHMIfMbVQzE7AJMc2syIgmePQ9GmnC-Yh0rda8,8432
1634
+ roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/ntides/.zarray,sha256=OQvNsBJhIgBR29AWJSK6SOXYxy5BDfvmsTDw3tZIyuo,312
1635
+ roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/ntides/.zattrs,sha256=eyhQWXmWgdG4zEDZw7JnQIB9GyOtaF9OTA2xDRSFHsM,53
1636
+ roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/ntides/0,sha256=Il_bgbmovgqFzrER-C7GA32gqH4eTg8BIulbfbEP6kY,28
1619
1637
  roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/omega/.zarray,sha256=QJk7BbHqf7zLSgA3rDjjueflWfaOFQnLPo93setNszE,313
1620
- roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/omega/.zattrs,sha256=CFW_66Lf8W-02J-DyCupFl7oNvo6deLltnZ2Weh7sms,111
1638
+ roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/omega/.zattrs,sha256=eyhQWXmWgdG4zEDZw7JnQIB9GyOtaF9OTA2xDRSFHsM,53
1621
1639
  roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/omega/0,sha256=DaRI2juaUIrBGAqyxolkAOovXILayoFKyjIOCpUBEQs,24
1622
1640
  roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/pot_Im/.zarray,sha256=5eEE-ahTAT3FR10dZI-_sjtRTE8HV5UWMK12Md89Ue4,357
1623
1641
  roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/pot_Im/.zattrs,sha256=SgAdqj6LpCQxx7Nno_jzVs21Mqteqx1QDj3u0ZuISMw,186
1624
- roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/pot_Im/0.0.0,sha256=_j31Ho78K7YWEyhiZArZsDtu47HAWA1haAXwoXgXtBA,116
1642
+ roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/pot_Im/0.0.0,sha256=wPnKNkOgLx0k6sdYQSQkHGI1brYCkLn-2UieOU9O5Hk,116
1625
1643
  roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/pot_Re/.zarray,sha256=5eEE-ahTAT3FR10dZI-_sjtRTE8HV5UWMK12Md89Ue4,357
1626
1644
  roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/pot_Re/.zattrs,sha256=8pF5Schwozu2kLC6TYTSIDuWE_ScIDNvPHcfm2egWnA,183
1627
- roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/pot_Re/0.0.0,sha256=s6sI49TGOxee9FDZ2fNtnXDZ0o_TDNrYZS6RkBOjU2A,116
1645
+ roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/pot_Re/0.0.0,sha256=CLa34rVIppR8yfAACBrjRRzPdl_bS1M4DnUprQuyvgc,116
1628
1646
  roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/ssh_Im/.zarray,sha256=5eEE-ahTAT3FR10dZI-_sjtRTE8HV5UWMK12Md89Ue4,357
1629
1647
  roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/ssh_Im/.zattrs,sha256=SzfiBEjcVA92fvAUI1_rPDSnNYuAsS5sJ_dT_X83eWs,186
1630
- roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/ssh_Im/0.0.0,sha256=4AMnOBTFVHRZNqrgphGCniOk7YflfQzB69PMySKX1cI,116
1648
+ roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/ssh_Im/0.0.0,sha256=zT6hS9Sq3GL0W58nB2D4hCQdBC4IkuAUe5TICetYE7s,116
1631
1649
  roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/ssh_Re/.zarray,sha256=5eEE-ahTAT3FR10dZI-_sjtRTE8HV5UWMK12Md89Ue4,357
1632
1650
  roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/ssh_Re/.zattrs,sha256=6MvCsVGA_hcmMVsbjI8CdcX9t2RbDbcaqyamdnrb8rg,183
1633
- roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/ssh_Re/0.0.0,sha256=_Yc1-KwBNNxI4iiI8Vgzix8j88YinMcCtpVwJRJSOdM,116
1651
+ roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/ssh_Re/0.0.0,sha256=5fZDtK3jOTdvG1iWQeYxTk1XGPILhLgld8Q6T_5n6FE,116
1634
1652
  roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/u_Im/.zarray,sha256=vIn3uMjDuhnPSNz1P1xtgkKIZXESSyC4iBwtbufu3tg,357
1635
1653
  roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/u_Im/.zattrs,sha256=tfP6qWLbmRA_gxUREX0A21zaW1bk4cNsNk-sEcx-Cw8,200
1636
- roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/u_Im/0.0.0,sha256=sADFgEi2RIiitCA3NbtfrahfcBGcI-aCRjD4tUBls9o,96
1654
+ roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/u_Im/0.0.0,sha256=QI1_uSLfOiuAKulV86tsg5MIDjjNTNyHehvYvTkmzT8,96
1637
1655
  roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/u_Re/.zarray,sha256=vIn3uMjDuhnPSNz1P1xtgkKIZXESSyC4iBwtbufu3tg,357
1638
1656
  roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/u_Re/.zattrs,sha256=asEgtvPVKm2fQ7P43rNClUix2xQPfD2UTus3QBuK2PM,197
1639
- roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/u_Re/0.0.0,sha256=7O5Q4N4Fxt32HAeny7chYYFug0yW28LgygB-ltCJlOs,96
1657
+ roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/u_Re/0.0.0,sha256=knNkYTaQh68BEmHOBD-eT5dCuxQPMDR3esWuKGvplU8,96
1640
1658
  roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/v_Im/.zarray,sha256=2P8kKjSgdw5-3udU-vGJ3bzhNuRn7fZmWN811qBJn34,357
1641
1659
  roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/v_Im/.zattrs,sha256=Ta2jmdCDMQ-pvSaXUKkKFItX3D3XMve5DWxlESkCP3w,200
1642
- roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/v_Im/0.0.0,sha256=60jWZkAuMuYp2hk4MB2Krm2C4asQvzC_c87cYIkivbk,96
1660
+ roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/v_Im/0.0.0,sha256=mT4xxZ8j0de35MYkPMWWE_zMtWHcCu61jiYnqzCElIs,96
1643
1661
  roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/v_Re/.zarray,sha256=2P8kKjSgdw5-3udU-vGJ3bzhNuRn7fZmWN811qBJn34,357
1644
1662
  roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/v_Re/.zattrs,sha256=2z7WUPvCT9VfFs8VCBltFHLWgaGj1jcw3yZ4n0viLRg,197
1645
- roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/v_Re/0.0.0,sha256=33Gl8otBmgqVarmAnZuEqTYS2_hVJUJh-iN1HzvaDuo,96
1663
+ roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/v_Re/0.0.0,sha256=yHtxKA81q4GxYfuxgEz5zsGM2tVp6Ytex7gV4AnZwfY,96
1646
1664
  roms_tools/tests/test_tiling/test_partition.py,sha256=b6EepZndVDv1B6Qt5_MbDfrFF2LtR0BF7i1t30xHEvA,7977
1647
1665
  roms_tools/tiling/partition.py,sha256=ZxDNGIKXZf_7eEzw9cxGP2XR_WBhZ4WCeIMl7_IdskA,12302
1648
- roms_tools-2.6.2.dist-info/licenses/LICENSE,sha256=yiff76E4xRioW2bHhlPpyYpstmePQBx2bF8HhgQhSsg,11318
1649
- roms_tools-2.6.2.dist-info/METADATA,sha256=9BAwDfT3FYvpjQG44ty97Am8PVDKWeeTX3U9LwNLF3w,4696
1650
- roms_tools-2.6.2.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
1651
- roms_tools-2.6.2.dist-info/top_level.txt,sha256=aAf4T4nYQSkay5iKJ9kmTjlDgd4ETdp9OSlB4sJdt8Y,19
1652
- roms_tools-2.6.2.dist-info/RECORD,,
1666
+ roms_tools-2.7.0.dist-info/licenses/LICENSE,sha256=yiff76E4xRioW2bHhlPpyYpstmePQBx2bF8HhgQhSsg,11318
1667
+ roms_tools-2.7.0.dist-info/METADATA,sha256=UGJufb3n2wE4YCagKsgki5pZ1O3Pe3iH5CTWdouAU_8,4696
1668
+ roms_tools-2.7.0.dist-info/WHEEL,sha256=ck4Vq1_RXyvS4Jt6SI0Vz6fyVs4GWg7AINwpsaGEgPE,91
1669
+ roms_tools-2.7.0.dist-info/top_level.txt,sha256=aAf4T4nYQSkay5iKJ9kmTjlDgd4ETdp9OSlB4sJdt8Y,19
1670
+ roms_tools-2.7.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (78.1.0)
2
+ Generator: setuptools (80.0.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5