eo-tides 0.6.5.dev11__tar.gz → 0.6.5.dev12__tar.gz

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 (77) hide show
  1. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/PKG-INFO +2 -2
  2. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/pyproject.toml +2 -2
  3. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/tests/test_eo.py +14 -6
  4. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/tests/test_model.py +19 -13
  5. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/tests/test_stats.py +21 -9
  6. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/tests/testing.ipynb +73 -8
  7. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/uv.lock +1782 -1784
  8. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/.editorconfig +0 -0
  9. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  10. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  11. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/.github/actions/setup-python-env/action.yml +0 -0
  12. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/.github/dependabot.yml +0 -0
  13. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/.github/workflows/check-links.yml +0 -0
  14. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/.github/workflows/main.yml +0 -0
  15. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/.github/workflows/on-release-main.yml +0 -0
  16. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/.github/workflows/paper.yml +0 -0
  17. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/.gitignore +0 -0
  18. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/.pre-commit-config.yaml +0 -0
  19. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/CITATION.cff +0 -0
  20. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/CONTRIBUTING.md +0 -0
  21. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/Dockerfile +0 -0
  22. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/LICENSE +0 -0
  23. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/Makefile +0 -0
  24. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/README.md +0 -0
  25. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/codecov.yaml +0 -0
  26. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/docs/api.md +0 -0
  27. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/docs/assets/dtu23_download.jpg +0 -0
  28. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/docs/assets/eo-tides-abstract.gif +0 -0
  29. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/docs/assets/eo-tides-logo-128.png +0 -0
  30. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/docs/assets/eo-tides-logo-256.png +0 -0
  31. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/docs/assets/eo-tides-logo.gif +0 -0
  32. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/docs/assets/eo-tides-logo.png +0 -0
  33. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/docs/assets/eot20_download.jpg +0 -0
  34. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/docs/assets/fes_ftp.jpg +0 -0
  35. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/docs/assets/fes_myproducts.jpg +0 -0
  36. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/docs/assets/fes_productselection.jpg +0 -0
  37. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/docs/assets/fes_subscriptions.jpg +0 -0
  38. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/docs/assets/got_download.jpg +0 -0
  39. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/docs/assets/tide_models_clipped.jpg +0 -0
  40. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/docs/assets/tpxo_download.jpg +0 -0
  41. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/docs/changelog.md +0 -0
  42. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/docs/credits.md +0 -0
  43. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/docs/index.md +0 -0
  44. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/docs/install.md +0 -0
  45. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/docs/migration.md +0 -0
  46. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/docs/notebooks/Case_study_intertidal.ipynb +0 -0
  47. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/docs/notebooks/Model_tides.ipynb +0 -0
  48. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/docs/notebooks/Satellite_data.ipynb +0 -0
  49. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/docs/notebooks/Tide_statistics.ipynb +0 -0
  50. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/docs/notebooks/Validating_tides.ipynb +0 -0
  51. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/docs/setup.md +0 -0
  52. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/docs/stylesheets/extra.css +0 -0
  53. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/eo_tides/__init__.py +0 -0
  54. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/eo_tides/eo.py +0 -0
  55. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/eo_tides/model.py +0 -0
  56. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/eo_tides/stats.py +0 -0
  57. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/eo_tides/utils.py +0 -0
  58. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/eo_tides/validation.py +0 -0
  59. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/mkdocs.yml +0 -0
  60. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/paper/benchmarking.ipynb +0 -0
  61. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/paper/figures/joss_abstract.png +0 -0
  62. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/paper/figures/joss_fig_gesla.png +0 -0
  63. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/paper/figures/joss_fig_list.png +0 -0
  64. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/paper/figures/joss_fig_pixel.png +0 -0
  65. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/paper/figures/joss_fig_stats.png +0 -0
  66. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/paper/paper.bib +0 -0
  67. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/paper/paper.md +0 -0
  68. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/paper/paper.pdf +0 -0
  69. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/tests/conftest.py +0 -0
  70. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/tests/data/GESLA3_ALL 2.csv +0 -0
  71. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/tests/data/IDO71013_2020.csv +0 -0
  72. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/tests/data/broome-62650-aus-bom +0 -0
  73. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/tests/data/san_diego_ca-569a-usa-uhslc +0 -0
  74. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/tests/data/sydney_fort_denison-60370-aus-bom +0 -0
  75. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/tests/data/tide_models.tar.gz +0 -0
  76. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/tests/test_utils.py +0 -0
  77. {eo_tides-0.6.5.dev11 → eo_tides-0.6.5.dev12}/tests/test_validation.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: eo-tides
3
- Version: 0.6.5.dev11
3
+ Version: 0.6.5.dev12
4
4
  Summary: Tide modelling tools for large-scale satellite earth observation analysis
5
5
  Project-URL: Homepage, https://GeoscienceAustralia.github.io/eo-tides/
6
6
  Project-URL: Repository, https://github.com/GeoscienceAustralia/eo-tides
@@ -32,7 +32,7 @@ Requires-Dist: pandas>=2.2.0
32
32
  Requires-Dist: psutil>=5.8.0
33
33
  Requires-Dist: pyogrio>=0.10.0
34
34
  Requires-Dist: pyproj>=3.7.0
35
- Requires-Dist: pytmd==2.2.2
35
+ Requires-Dist: pytmd<2.2.5,>=2.2.2
36
36
  Requires-Dist: scikit-learn>=1.4.0
37
37
  Requires-Dist: scipy>=1.14.1
38
38
  Requires-Dist: shapely>=2.0.6
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "eo-tides"
3
- version = "0.6.5.dev11"
3
+ version = "0.6.5.dev12"
4
4
  description = "Tide modelling tools for large-scale satellite earth observation analysis"
5
5
  authors = [
6
6
  { name = "Robbi Bishop-Taylor" },
@@ -45,7 +45,7 @@ dependencies = [
45
45
  "psutil>=5.8.0",
46
46
  "pyogrio>=0.10.0",
47
47
  "pyproj>=3.7.0",
48
- "pyTMD==2.2.2",
48
+ "pyTMD>=2.2.2,<2.2.5",
49
49
  "scikit-learn>=1.4.0",
50
50
  "scipy>=1.14.1",
51
51
  "shapely>=2.0.6",
@@ -62,7 +62,15 @@ def test_tag_tides_phases(satellite_ds, measured_tides_ds):
62
62
  assert set(expected_vars) == set(tagged_tides_ds.data_vars)
63
63
 
64
64
  # Verify tide_phase values
65
- expected_phases = ["low-flow", "high-flow", "low-ebb", "low-flow", "low-ebb", "low-flow", "high-flow"]
65
+ expected_phases = [
66
+ "low-flow",
67
+ "high-flow",
68
+ "low-ebb",
69
+ "low-flow",
70
+ "low-ebb",
71
+ "low-flow",
72
+ "high-flow",
73
+ ]
66
74
  assert tagged_tides_ds.tide_phase.values.tolist() == expected_phases
67
75
 
68
76
  # Assert tide_model dim has been squeezed out
@@ -248,12 +256,12 @@ def test_pixel_tides_quantile(satellite_ds):
248
256
 
249
257
  # Test if extracted tides match expected results (to within ~2 cm)
250
258
  expected_tides = np.array([
251
- [-1.89, -2.17, -2.1, -2.21],
252
- [-1.20, -1.28, -1.26, -1.30],
253
- [-0.71, -0.8, -0.77, -0.82],
254
- [-0.33, -0.32, -0.34, -0.32],
259
+ [-1.90, -2.18, -2.11, -2.22],
260
+ [-1.20, -1.27, -1.25, -1.29],
261
+ [-0.70, -0.78, -0.76, -0.80],
262
+ [-0.31, -0.31, -0.32, -0.31],
255
263
  [0.5, 0.42, 0.45, 0.41],
256
- [1.59, 1.69, 1.66, 1.70],
264
+ [1.61, 1.70, 1.67, 1.71],
257
265
  ])
258
266
  assert np.allclose(extracted_tides.values, expected_tides, atol=0.02)
259
267
 
@@ -3,7 +3,13 @@ import pandas as pd
3
3
  import pytest
4
4
  from pyTMD.compute import tide_elevations
5
5
 
6
- from eo_tides.model import _parallel_splits, _set_directory, ensemble_tides, model_phases, model_tides
6
+ from eo_tides.model import (
7
+ _parallel_splits,
8
+ _set_directory,
9
+ ensemble_tides,
10
+ model_phases,
11
+ model_tides,
12
+ )
7
13
  from eo_tides.validation import eval_metrics
8
14
 
9
15
  GAUGE_X = 122.2183
@@ -300,18 +306,18 @@ def test_model_tides_ensemble():
300
306
  assert np.allclose(
301
307
  modelled_tides_df.tide_height.values,
302
308
  [
303
- 0.094,
304
- -3.202,
305
- 0.409,
306
- -3.098,
307
- 0.803,
308
- 0.664,
309
- 0.989,
309
+ 0.069,
310
+ -3.186,
311
+ 0.383,
312
+ -3.081,
313
+ 0.807,
314
+ 0.665,
315
+ 0.996,
310
316
  1.011,
311
- 0.449,
312
- -1.269,
313
- 0.699,
314
- -1.043,
317
+ 0.438,
318
+ -1.261,
319
+ 0.690,
320
+ -1.035,
315
321
  ],
316
322
  atol=0.02,
317
323
  )
@@ -377,7 +383,7 @@ def test_model_tides_ensemble():
377
383
  assert closer_model == ["EOT20", "HAMTIDE11", "EOT20", "HAMTIDE11"]
378
384
 
379
385
  # Check values are expected
380
- assert np.allclose(modelled_tides_df.ensemble, [0.09, 0.98, -3.20, 1.01], atol=0.02)
386
+ assert np.allclose(modelled_tides_df.ensemble, [0.08, 0.98, -3.20, 1.01], atol=0.02)
381
387
 
382
388
  # Wide mode, custom functions
383
389
  ensemble_funcs = {
@@ -28,16 +28,16 @@ def test_tidal_stats(satellite_ds, modelled_freq, tidepost_lon, tidepost_lat):
28
28
 
29
29
  # Compare outputs to expected results (within 2% or 0.02 m)
30
30
  expected_results = pd.Series({
31
- "mot": -0.417,
31
+ "mot": -0.407,
32
32
  "mat": -0.005,
33
- "hot": 1.674,
34
- "hat": 4.259,
33
+ "hot": 1.684,
34
+ "hat": 4.275,
35
35
  "lot": -2.141,
36
- "lat": -4.321,
37
- "otr": 3.814,
38
- "tr": 8.580,
39
- "spread": 0.445,
40
- "offset_low": 0.254,
36
+ "lat": -4.339,
37
+ "otr": 3.825,
38
+ "tr": 8.614,
39
+ "spread": 0.444,
40
+ "offset_low": 0.255,
41
41
  "offset_high": 0.301,
42
42
  "x": 122.218,
43
43
  "y": -18.001,
@@ -121,7 +121,19 @@ def test_pixel_stats(satellite_ds, models, resample):
121
121
  assert stats_ds.odc.spatial_dims == satellite_ds.odc.spatial_dims
122
122
 
123
123
  # Verify vars are as expected
124
- expected_vars = ["mot", "mat", "hot", "hat", "lot", "lat", "otr", "tr", "spread", "offset_low", "offset_high"]
124
+ expected_vars = [
125
+ "mot",
126
+ "mat",
127
+ "hot",
128
+ "hat",
129
+ "lot",
130
+ "lat",
131
+ "otr",
132
+ "tr",
133
+ "spread",
134
+ "offset_low",
135
+ "offset_high",
136
+ ]
125
137
  assert set(expected_vars) == set(stats_ds.data_vars)
126
138
 
127
139
  # Verify tide models are correct
@@ -6,7 +6,7 @@
6
6
  "metadata": {},
7
7
  "outputs": [],
8
8
  "source": [
9
- "!pip install uv==0.5.0\n",
9
+ "# !pip install uv==0.5.0\n",
10
10
  "!pip install -e .. --quiet"
11
11
  ]
12
12
  },
@@ -16,7 +16,7 @@
16
16
  "metadata": {},
17
17
  "outputs": [],
18
18
  "source": [
19
- "# !pip install -e /home/jovyan/Robbi/pyTMD"
19
+ "!pip install pyTMD==2.2.4"
20
20
  ]
21
21
  },
22
22
  {
@@ -24,6 +24,15 @@
24
24
  "execution_count": null,
25
25
  "metadata": {},
26
26
  "outputs": [],
27
+ "source": [
28
+ "# !pip install -e /home/jovyan/Robbi/pyTMD"
29
+ ]
30
+ },
31
+ {
32
+ "cell_type": "code",
33
+ "execution_count": 1,
34
+ "metadata": {},
35
+ "outputs": [],
27
36
  "source": [
28
37
  "%load_ext autoreload\n",
29
38
  "%autoreload 2\n",
@@ -46,9 +55,17 @@
46
55
  },
47
56
  {
48
57
  "cell_type": "code",
49
- "execution_count": null,
58
+ "execution_count": 2,
50
59
  "metadata": {},
51
- "outputs": [],
60
+ "outputs": [
61
+ {
62
+ "name": "stdout",
63
+ "output_type": "stream",
64
+ "text": [
65
+ "/home/jovyan/Robbi/eo-tides\n"
66
+ ]
67
+ }
68
+ ],
52
69
  "source": [
53
70
  "cd .."
54
71
  ]
@@ -225,8 +242,8 @@
225
242
  "\n",
226
243
  "satellite_ds = load_satellite_ds()\n",
227
244
  "measured_tides_ds = load_measured_tides_ds()\n",
228
- "create_synthetic_eot20()\n",
229
- "create_synthetic_hamtide11()"
245
+ "# create_synthetic_eot20()\n",
246
+ "# create_synthetic_hamtide11()"
230
247
  ]
231
248
  },
232
249
  {
@@ -281,6 +298,54 @@
281
298
  "!export EO_TIDES_TIDE_MODELS=./tests/data/tide_models && pytest tests/test_utils.py --verbose -k test_clip_models"
282
299
  ]
283
300
  },
301
+ {
302
+ "cell_type": "markdown",
303
+ "metadata": {},
304
+ "source": [
305
+ "## Test new PyTMD version"
306
+ ]
307
+ },
308
+ {
309
+ "cell_type": "code",
310
+ "execution_count": null,
311
+ "metadata": {},
312
+ "outputs": [],
313
+ "source": [
314
+ "from eo_tides.model import model_tides\n",
315
+ "from eo_tides.validation import eval_metrics\n",
316
+ "import numpy as np\n",
317
+ "import pandas as pd\n",
318
+ "\n",
319
+ "directory = \"/var/share/tide_models/\"\n",
320
+ "\n",
321
+ "# Time the spline method\n",
322
+ "modelled_tides_df = model_tides(\n",
323
+ " x=GAUGE_X,\n",
324
+ " y=GAUGE_Y,\n",
325
+ " time=measured_tides_ds.time,\n",
326
+ " model=\"all\",\n",
327
+ " directory=directory,\n",
328
+ ")"
329
+ ]
330
+ },
331
+ {
332
+ "cell_type": "code",
333
+ "execution_count": null,
334
+ "metadata": {},
335
+ "outputs": [],
336
+ "source": [
337
+ "modelled_tides_df.groupby(\"tide_model\").apply(lambda z: eval_metrics(x=measured_tides_ds.tide_height, y=z.tide_height))"
338
+ ]
339
+ },
340
+ {
341
+ "cell_type": "code",
342
+ "execution_count": null,
343
+ "metadata": {},
344
+ "outputs": [],
345
+ "source": [
346
+ "modelled_tides_df.groupby(\"tide_model\").apply(lambda z: eval_metrics(x=measured_tides_ds.tide_height, y=z.tide_height))"
347
+ ]
348
+ },
284
349
  {
285
350
  "cell_type": "markdown",
286
351
  "metadata": {},
@@ -2762,7 +2827,7 @@
2762
2827
  ],
2763
2828
  "metadata": {
2764
2829
  "kernelspec": {
2765
- "display_name": ".venv",
2830
+ "display_name": "Python 3 (ipykernel)",
2766
2831
  "language": "python",
2767
2832
  "name": "python3"
2768
2833
  },
@@ -2776,7 +2841,7 @@
2776
2841
  "name": "python",
2777
2842
  "nbconvert_exporter": "python",
2778
2843
  "pygments_lexer": "ipython3",
2779
- "version": "3.12.0"
2844
+ "version": "3.10.15"
2780
2845
  }
2781
2846
  },
2782
2847
  "nbformat": 4,