pyTMD 3.0.0__tar.gz → 3.0.2__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 (63) hide show
  1. pytmd-3.0.2/MANIFEST.in +13 -0
  2. {pytmd-3.0.0/pyTMD.egg-info → pytmd-3.0.2}/PKG-INFO +50 -13
  3. pytmd-3.0.2/README.md +169 -0
  4. {pytmd-3.0.0 → pytmd-3.0.2}/pyTMD/__init__.py +1 -0
  5. {pytmd-3.0.0 → pytmd-3.0.2}/pyTMD/astro.py +584 -344
  6. {pytmd-3.0.0 → pytmd-3.0.2}/pyTMD/compute.py +381 -330
  7. pytmd-3.0.2/pyTMD/constituents.py +2981 -0
  8. pytmd-3.0.2/pyTMD/data/re14_tab3.txt +81 -0
  9. {pytmd-3.0.0 → pytmd-3.0.2}/pyTMD/datasets/__init__.py +8 -2
  10. {pytmd-3.0.0 → pytmd-3.0.2}/pyTMD/datasets/fetch_arcticdata.py +78 -44
  11. {pytmd-3.0.0 → pytmd-3.0.2}/pyTMD/datasets/fetch_aviso_fes.py +289 -185
  12. pytmd-3.0.2/pyTMD/datasets/fetch_box_tpxo.py +303 -0
  13. {pytmd-3.0.0 → pytmd-3.0.2}/pyTMD/datasets/fetch_gsfc_got.py +107 -65
  14. pytmd-3.0.2/pyTMD/datasets/fetch_iers_opole.py +147 -0
  15. pytmd-3.0.2/pyTMD/datasets/fetch_jpl_ssd.py +152 -0
  16. pytmd-3.0.2/pyTMD/datasets/fetch_test_data.py +298 -0
  17. {pytmd-3.0.0 → pytmd-3.0.2}/pyTMD/datasets/reduce_otis.py +99 -62
  18. {pytmd-3.0.0 → pytmd-3.0.2}/pyTMD/ellipse.py +43 -42
  19. {pytmd-3.0.0 → pytmd-3.0.2}/pyTMD/interpolate.py +76 -68
  20. {pytmd-3.0.0 → pytmd-3.0.2}/pyTMD/io/ATLAS.py +182 -167
  21. {pytmd-3.0.0 → pytmd-3.0.2}/pyTMD/io/FES.py +122 -116
  22. {pytmd-3.0.0 → pytmd-3.0.2}/pyTMD/io/GOT.py +186 -102
  23. {pytmd-3.0.0 → pytmd-3.0.2}/pyTMD/io/IERS.py +49 -41
  24. {pytmd-3.0.0 → pytmd-3.0.2}/pyTMD/io/NOAA.py +83 -82
  25. {pytmd-3.0.0 → pytmd-3.0.2}/pyTMD/io/OTIS.py +829 -806
  26. pytmd-3.0.2/pyTMD/io/__init__.py +16 -0
  27. {pytmd-3.0.0 → pytmd-3.0.2}/pyTMD/io/dataset.py +305 -233
  28. {pytmd-3.0.0 → pytmd-3.0.2}/pyTMD/io/model.py +141 -136
  29. {pytmd-3.0.0 → pytmd-3.0.2}/pyTMD/math.py +81 -84
  30. {pytmd-3.0.0 → pytmd-3.0.2}/pyTMD/predict.py +1199 -789
  31. {pytmd-3.0.0 → pytmd-3.0.2}/pyTMD/solve/__init__.py +2 -1
  32. {pytmd-3.0.0 → pytmd-3.0.2}/pyTMD/solve/constants.py +63 -54
  33. {pytmd-3.0.0 → pytmd-3.0.2}/pyTMD/spatial.py +566 -463
  34. {pytmd-3.0.0 → pytmd-3.0.2}/pyTMD/tools.py +118 -82
  35. {pytmd-3.0.0 → pytmd-3.0.2}/pyTMD/utilities.py +398 -326
  36. {pytmd-3.0.0 → pytmd-3.0.2}/pyTMD/version.py +2 -1
  37. {pytmd-3.0.0 → pytmd-3.0.2/pyTMD.egg-info}/PKG-INFO +50 -13
  38. {pytmd-3.0.0 → pytmd-3.0.2}/pyTMD.egg-info/SOURCES.txt +4 -2
  39. {pytmd-3.0.0 → pytmd-3.0.2}/pyTMD.egg-info/entry_points.txt +3 -5
  40. {pytmd-3.0.0 → pytmd-3.0.2}/pyproject.toml +32 -18
  41. pytmd-3.0.0/MANIFEST.in +0 -9
  42. pytmd-3.0.0/README.md +0 -131
  43. pytmd-3.0.0/pyTMD/constituents.py +0 -2375
  44. pytmd-3.0.0/pyTMD/data/opoleloadcoefcmcor.txt.gz +0 -0
  45. pytmd-3.0.0/pyTMD/datasets/fetch_test_data.py +0 -187
  46. pytmd-3.0.0/pyTMD/datasets/verify_box_tpxo.py +0 -211
  47. pytmd-3.0.0/pyTMD/io/__init__.py +0 -15
  48. {pytmd-3.0.0 → pytmd-3.0.2}/LICENSE +0 -0
  49. {pytmd-3.0.0 → pytmd-3.0.2}/pyTMD/data/ct1971_tab6.txt +0 -0
  50. {pytmd-3.0.0 → pytmd-3.0.2}/pyTMD/data/cte1973_tab.txt +0 -0
  51. {pytmd-3.0.0 → pytmd-3.0.2}/pyTMD/data/d1921_tab.txt +0 -0
  52. {pytmd-3.0.0 → pytmd-3.0.2}/pyTMD/data/database.json +0 -0
  53. {pytmd-3.0.0 → pytmd-3.0.2}/pyTMD/data/doodson.json +0 -0
  54. {pytmd-3.0.0 → pytmd-3.0.2}/pyTMD/data/hw1995_tab.txt +0 -0
  55. {pytmd-3.0.0 → pytmd-3.0.2}/pyTMD/data/t1987_tab.txt +0 -0
  56. {pytmd-3.0.0 → pytmd-3.0.2}/pyTMD/data/tab5.2e.txt +0 -0
  57. {pytmd-3.0.0 → pytmd-3.0.2}/pyTMD/data/tab5.3a.txt +0 -0
  58. {pytmd-3.0.0 → pytmd-3.0.2}/pyTMD/data/tab5.3b.txt +0 -0
  59. {pytmd-3.0.0 → pytmd-3.0.2}/pyTMD/data/w1990_tab.txt +0 -0
  60. {pytmd-3.0.0 → pytmd-3.0.2}/pyTMD.egg-info/dependency_links.txt +0 -0
  61. {pytmd-3.0.0 → pytmd-3.0.2}/pyTMD.egg-info/requires.txt +0 -0
  62. {pytmd-3.0.0 → pytmd-3.0.2}/pyTMD.egg-info/top_level.txt +0 -0
  63. {pytmd-3.0.0 → pytmd-3.0.2}/setup.cfg +0 -0
@@ -0,0 +1,13 @@
1
+ graft pyTMD/data
2
+ prune .github*
3
+ prune doc*
4
+ prune providers*
5
+ prune run*
6
+ prune test*
7
+ exclude *.cff
8
+ exclude *.md
9
+ exclude *.yml
10
+ exclude pixi.lock
11
+ exclude .gitattributes
12
+ exclude .gitignore
13
+ exclude .zenodo.json
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyTMD
3
- Version: 3.0.0
3
+ Version: 3.0.2
4
4
  Summary: Python-based tidal prediction software for estimating ocean, load, solid Earth and pole tides
5
5
  Author: Tyler Sutterley
6
6
  Author-email: tsutterl@uw.edu
@@ -37,16 +37,15 @@ Classifier: Intended Audience :: Science/Research
37
37
  Classifier: License :: OSI Approved :: MIT License
38
38
  Classifier: Operating System :: OS Independent
39
39
  Classifier: Programming Language :: Python :: 3
40
- Classifier: Programming Language :: Python :: 3.6
41
- Classifier: Programming Language :: Python :: 3.7
42
- Classifier: Programming Language :: Python :: 3.8
43
40
  Classifier: Programming Language :: Python :: 3.9
44
41
  Classifier: Programming Language :: Python :: 3.10
45
42
  Classifier: Programming Language :: Python :: 3.11
46
43
  Classifier: Programming Language :: Python :: 3.12
44
+ Classifier: Programming Language :: Python :: 3.13
45
+ Classifier: Programming Language :: Python :: 3.14
47
46
  Classifier: Topic :: Scientific/Engineering :: Physics
48
47
  Classifier: Topic :: Scientific/Engineering :: Oceanography
49
- Requires-Python: ~=3.6
48
+ Requires-Python: ~=3.9
50
49
  Description-Content-Type: text/markdown
51
50
  License-File: LICENSE
52
51
  Requires-Dist: h5netcdf
@@ -97,15 +96,49 @@ Dynamic: license-file
97
96
 
98
97
  # pyTMD
99
98
 
100
- [![License](https://img.shields.io/github/license/pyTMD/pyTMD)](https://github.com/pyTMD/pyTMD/blob/main/LICENSE)
101
- [![Documentation Status](https://readthedocs.org/projects/pytmd/badge/?version=latest)](https://pytmd.readthedocs.io/en/latest/?badge=latest)
102
- [![PyPI](https://img.shields.io/pypi/v/pyTMD.svg)](https://pypi.python.org/pypi/pyTMD/)
103
- [![conda-forge](https://img.shields.io/conda/vn/conda-forge/pytmd)](https://anaconda.org/conda-forge/pytmd)
104
- [![commits-since](https://img.shields.io/github/commits-since/pyTMD/pyTMD/latest)](https://github.com/pyTMD/pyTMD/releases/latest)
105
- [![zenodo](https://zenodo.org/badge/DOI/10.5281/zenodo.5555395.svg)](https://doi.org/10.5281/zenodo.5555395)
106
-
107
99
  Python-based tidal prediction software for estimating ocean, load, solid Earth and pole tides
108
100
 
101
+ ## About
102
+
103
+ <table>
104
+ <tr>
105
+ <td><b>Version:</b></td>
106
+ <td>
107
+ <a href="https://pypi.python.org/pypi/pyTMD/" alt="PyPI"><img src="https://img.shields.io/pypi/v/pyTMD.svg"></a>
108
+ <a href="https://anaconda.org/conda-forge/pytmd" alt="conda-forge"><img src="https://img.shields.io/conda/vn/conda-forge/pytmd"></a>
109
+ <a href="https://github.com/pyTMD/pyTMD/releases/latest" alt="commits-since"><img src="https://img.shields.io/github/commits-since/pyTMD/pyTMD/latest"></a>
110
+ </td>
111
+ </tr>
112
+ <tr>
113
+ <td><b>Citation:</b></td>
114
+ <td>
115
+ <a href="https://doi.org/10.21105/joss.08566" alt="JOSS"><img src="https://joss.theoj.org/papers/10.21105/joss.08566/status.svg"></a>
116
+ <a href="https://doi.org/10.5281/zenodo.5555395" alt="zenodo"><img src="https://zenodo.org/badge/DOI/10.5281/zenodo.5555395.svg"></a>
117
+ </td>
118
+ </tr>
119
+ <tr>
120
+ <td><b>Tests:</b></td>
121
+ <td>
122
+ <a href="https://pytmd.readthedocs.io/en/latest/?badge=latest" alt="Documentation Status"><img src="https://readthedocs.org/projects/pytmd/badge/?version=latest"></a>
123
+ <a href="https://github.com/pyTMD/pyTMD/actions/workflows/python-request.yml" alt="Build"><img src="https://github.com/pyTMD/pyTMD/actions/workflows/python-request.yml/badge.svg"></a>
124
+ <a href="https://github.com/pyTMD/pyTMD/actions/workflows/ruff-format.yml" alt="Ruff"><img src="https://github.com/pyTMD/pyTMD/actions/workflows/ruff-format.yml/badge.svg"></a>
125
+ </td>
126
+ </tr>
127
+ <tr>
128
+ <td><b>Data:</b></td>
129
+ <td>
130
+ <a href="https://doi.org/10.5281/zenodo.18091740" alt="zenodo"><img src="https://img.shields.io/badge/zenodo-pyTMD_test_data-2f6fa7.svg?logo=data:image/svg%2bxml;base64,PHN2ZyBpZD0iU3ZnanNTdmcxMDIxIiB3aWR0aD0iMjg4IiBoZWlnaHQ9IjI4OCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWxuczpzdmdqcz0iaHR0cDovL3N2Z2pzLmNvbS9zdmdqcyI+PGRlZnMgaWQ9IlN2Z2pzRGVmczEwMjIiPjwvZGVmcz48ZyBpZD0iU3ZnanNHMTAyMyI+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDIyMCA4MCIgdmlld0JveD0iMCAwIDUxLjA0NiA1MS4wNDYiIHdpZHRoPSIyODgiIGhlaWdodD0iMjg4Ij48cGF0aCBmaWxsPSIjZmZmZmZmIiBkPSJtIDI4LjMyNCwyMC4wNDQgYyAtMC4wNDMsLTAuMTA2IC0wLjA4NCwtMC4yMTQgLTAuMTMxLC0wLjMyIC0wLjcwNywtMS42MDIgLTEuNjU2LC0yLjk5NyAtMi44NDgsLTQuMTkgLTEuMTg4LC0xLjE4NyAtMi41ODIsLTIuMTI1IC00LjE4NCwtMi44MDUgLTEuNjA1LC0wLjY3OCAtMy4zMDksLTEuMDIgLTUuMTA0LC0xLjAyIC0xLjg1LDAgLTMuNTY0LDAuMzQyIC01LjEzNywxLjAyIC0xLjQ2NywwLjYyOCAtMi43NjQsMS40ODggLTMuOTEsMi41NTIgViAxNC44NCBjIDAsLTEuNTU3IC0xLjI2MiwtMi44MjIgLTIuODIsLTIuODIyIGggLTE5Ljc3NSBjIC0xLjU1NywwIC0yLjgyLDEuMjY1IC0yLjgyLDIuODIyIDAsMS41NTkgMS4yNjQsMi44MiAyLjgyLDIuODIgaCAxNS41NDEgbCAtMTguMjMsMjQuNTQ2IGMgLTAuMzYyLDAuNDg3IC0wLjU1NywxLjA3NyAtMC41NTcsMS42ODIgdiAxLjg0MSBjIDAsMS41NTggMS4yNjQsMi44MjIgMi44MjIsMi44MjIgSCA1LjAzOCBjIDEuNDg4LDAgMi43MDUsLTEuMTUzIDIuODEyLC0yLjYxNCAwLjkzMiwwLjc0MyAxLjk2NywxLjM2NCAzLjEwOSwxLjg0OCAxLjYwNSwwLjY4NCAzLjI5OSwxLjAyMSA1LjEwMiwxLjAyMSAyLjcyMywwIDUuMTUsLTAuNzI2IDcuMjg3LC0yLjE4NyAxLjcyNywtMS4xNzYgMy4wOTIsLTIuNjM5IDQuMDg0LC00LjM4OSAwLjgzMjc5OSwtMS40NzIwOTQgMS40MTgyODQsLTIuNjMzMzUyIDEuMjIxODg5LC0zLjcyOTE4MiAtMC4xNzMwMDMsLTAuOTY1MzE4IC0wLjY5NDkxNCwtMS45NDY0MTkgLTIuMzI2ODY1LC0yLjM3ODM1OCAtMC41OCwwIC0xLjM3NjAyNCwwLjE3NDU0IC0xLjgzMzAyNCwwLjQ5MjU0IC0wLjQ2MywwLjMxNiAtMC43OTMsMC43NDQgLTAuOTgyLDEuMjc1IGwgLTAuNDUzLDAuOTMgYyAtMC42MzEsMS4zNjUgLTEuNTY2LDIuNDQzIC0yLjgwOSwzLjI0NCAtMS4yMzgsMC44MDMgLTIuNjMzLDEuMjAxIC00LjE4OCwxLjIwMSAtMS4wMjMsMCAtMi4wMDQsLTAuMTkxIC0yLjk1NSwtMC41NzkgLTAuOTQxLC0wLjM5IC0xLjc1OCwtMC45MzUgLTIuNDM5LC0xLjY0IEMgOS45ODYsNDAuMzQzIDkuNDQxLDM5LjUyNiA5LjAyNywzOC42MDMgOC42MTcsMzcuNjc5IDguNDEsMzYuNzEgOC40MSwzNS42ODcgdiAtMi40NzYgaCAxNy43MTUgYyAwLDAgMS41MTc3NzQsLTAuMTU0NjYgMi4xODMzNzUsLTAuNzcwNjcyIDAuOTU4NDk2LC0wLjg4NzA4NSAwLjg2NDYyMiwtMi4xNTAzOCAwLjg2NDYyMiwtMi4xNTAzOCAwLDAgLTAuMDQzNTQsLTUuMDY2ODM0IC0wLjMzODM3NiwtNy41NzgxNTQgQyAyOC43MjkwNDgsMjEuODEyNTYzIDI4LjMyNCwyMC4wNDQgMjguMzI0LDIwLjA0NCBaIE0gLTExLjc2Nyw0Mi45MSAyLjk5MSwyMy4wMzYgQyAyLjkxMywyMy42MjMgMi44NywyNC4yMiAyLjg3LDI0LjgyNyB2IDEwLjg2IGMgMCwxLjc5OSAwLjM1LDMuNDk4IDEuMDU5LDUuMTA0IDAuMzI4LDAuNzUyIDAuNzE5LDEuNDU4IDEuMTU2LDIuMTE5IC0wLjAxNiwwIC0wLjAzMSwtMTBlLTQgLTAuMDQ3LC0xMGUtNCBIIC0xMS43NjcgWiBNIDIzLjcxLDI3LjY2NyBIIDguNDA5IHYgLTIuODQxIGMgMCwtMS4wMTUgMC4xODksLTEuOTkgMC41OCwtMi45MTIgMC4zOTEsLTAuOTIyIDAuOTM2LC0xLjc0IDEuNjQ1LC0yLjQ0NCAwLjY5NywtMC43MDMgMS41MTYsLTEuMjQ5IDIuNDM4LC0xLjY0MSAwLjkyMiwtMC4zODggMS45MiwtMC41ODEgMi45OSwtMC41ODEgMS4wMiwwIDIuMDAyLDAuMTkzIDIuOTQ5LDAuNTgxIDAuOTQ5LDAuMzkzIDEuNzY0LDAuOTM4IDIuNDQxLDEuNjQxIDAuNjgyLDAuNzA0IDEuMjI1LDEuNTIxIDEuNjQxLDIuNDQ0IDAuNDE0LDAuOTIyIDAuNjE3LDEuODk2IDAuNjE3LDIuOTEyIHoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIwLjM1IC00LjczNSkiIGNsYXNzPSJjb2xvcmZmZiBzdmdTaGFwZSI+PC9wYXRoPjwvc3ZnPjwvZz48L3N2Zz4="></a>
131
+ <a href="https://doi.org/10.6084/m9.figshare.30260326" alt="figshare"><img src="https://img.shields.io/badge/figshare-pyTMD_test_data-a60845?logo=figshare"></a>
132
+ </td>
133
+ </tr>
134
+ <tr>
135
+ <td><b>License:</b></td>
136
+ <td>
137
+ <a href="https://github.com/pyTMD/pyTMD/blob/main/LICENSE" alt="License"><img src="https://img.shields.io/github/license/pyTMD/pyTMD"></a>
138
+ </td>
139
+ </tr>
140
+ </table>
141
+
109
142
  For more information: see the documentation at [pytmd.readthedocs.io](https://pytmd.readthedocs.io/)
110
143
 
111
144
  ## Installation
@@ -176,11 +209,15 @@ This will automatically create the environment, install all dependencies, and la
176
209
 
177
210
  ## References
178
211
 
212
+ > T. C. Sutterley, S. L. Howard, L. Padman, and M. R. Siegfried,
213
+ > "pyTMD: Python-based tidal prediction software". *Journal of Open Source Software*,
214
+ > 10(116), 8566, (2025). [doi: 10.21105/joss.08566](https://doi.org/10.21105/joss.08566)
215
+ >
179
216
  > T. C. Sutterley, T. Markus, T. A. Neumann, M. R. van den Broeke, J. M. van Wessem, and S. R. M. Ligtenberg,
180
217
  > "Antarctic ice shelf thickness change from multimission lidar mapping", *The Cryosphere*,
181
218
  > 13, 1801-1817, (2019). [doi: 10.5194/tc-13-1801-2019](https://doi.org/10.5194/tc-13-1801-2019)
182
219
  >
183
- > L. Padman, M. R. Siegfried, H. A. Fricker,
220
+ > L. Padman, M. R. Siegfried, and H. A. Fricker,
184
221
  > "Ocean Tide Influences on the Antarctic and Greenland Ice Sheets", *Reviews of Geophysics*,
185
222
  > 56, 142-184, (2018). [doi: 10.1002/2016RG000546](https://doi.org/10.1002/2016RG000546)
186
223
 
pytmd-3.0.2/README.md ADDED
@@ -0,0 +1,169 @@
1
+ # pyTMD
2
+
3
+ Python-based tidal prediction software for estimating ocean, load, solid Earth and pole tides
4
+
5
+ ## About
6
+
7
+ <table>
8
+ <tr>
9
+ <td><b>Version:</b></td>
10
+ <td>
11
+ <a href="https://pypi.python.org/pypi/pyTMD/" alt="PyPI"><img src="https://img.shields.io/pypi/v/pyTMD.svg"></a>
12
+ <a href="https://anaconda.org/conda-forge/pytmd" alt="conda-forge"><img src="https://img.shields.io/conda/vn/conda-forge/pytmd"></a>
13
+ <a href="https://github.com/pyTMD/pyTMD/releases/latest" alt="commits-since"><img src="https://img.shields.io/github/commits-since/pyTMD/pyTMD/latest"></a>
14
+ </td>
15
+ </tr>
16
+ <tr>
17
+ <td><b>Citation:</b></td>
18
+ <td>
19
+ <a href="https://doi.org/10.21105/joss.08566" alt="JOSS"><img src="https://joss.theoj.org/papers/10.21105/joss.08566/status.svg"></a>
20
+ <a href="https://doi.org/10.5281/zenodo.5555395" alt="zenodo"><img src="https://zenodo.org/badge/DOI/10.5281/zenodo.5555395.svg"></a>
21
+ </td>
22
+ </tr>
23
+ <tr>
24
+ <td><b>Tests:</b></td>
25
+ <td>
26
+ <a href="https://pytmd.readthedocs.io/en/latest/?badge=latest" alt="Documentation Status"><img src="https://readthedocs.org/projects/pytmd/badge/?version=latest"></a>
27
+ <a href="https://github.com/pyTMD/pyTMD/actions/workflows/python-request.yml" alt="Build"><img src="https://github.com/pyTMD/pyTMD/actions/workflows/python-request.yml/badge.svg"></a>
28
+ <a href="https://github.com/pyTMD/pyTMD/actions/workflows/ruff-format.yml" alt="Ruff"><img src="https://github.com/pyTMD/pyTMD/actions/workflows/ruff-format.yml/badge.svg"></a>
29
+ </td>
30
+ </tr>
31
+ <tr>
32
+ <td><b>Data:</b></td>
33
+ <td>
34
+ <a href="https://doi.org/10.5281/zenodo.18091740" alt="zenodo"><img src="https://img.shields.io/badge/zenodo-pyTMD_test_data-2f6fa7.svg?logo=data:image/svg%2bxml;base64,PHN2ZyBpZD0iU3ZnanNTdmcxMDIxIiB3aWR0aD0iMjg4IiBoZWlnaHQ9IjI4OCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWxuczpzdmdqcz0iaHR0cDovL3N2Z2pzLmNvbS9zdmdqcyI+PGRlZnMgaWQ9IlN2Z2pzRGVmczEwMjIiPjwvZGVmcz48ZyBpZD0iU3ZnanNHMTAyMyI+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDIyMCA4MCIgdmlld0JveD0iMCAwIDUxLjA0NiA1MS4wNDYiIHdpZHRoPSIyODgiIGhlaWdodD0iMjg4Ij48cGF0aCBmaWxsPSIjZmZmZmZmIiBkPSJtIDI4LjMyNCwyMC4wNDQgYyAtMC4wNDMsLTAuMTA2IC0wLjA4NCwtMC4yMTQgLTAuMTMxLC0wLjMyIC0wLjcwNywtMS42MDIgLTEuNjU2LC0yLjk5NyAtMi44NDgsLTQuMTkgLTEuMTg4LC0xLjE4NyAtMi41ODIsLTIuMTI1IC00LjE4NCwtMi44MDUgLTEuNjA1LC0wLjY3OCAtMy4zMDksLTEuMDIgLTUuMTA0LC0xLjAyIC0xLjg1LDAgLTMuNTY0LDAuMzQyIC01LjEzNywxLjAyIC0xLjQ2NywwLjYyOCAtMi43NjQsMS40ODggLTMuOTEsMi41NTIgViAxNC44NCBjIDAsLTEuNTU3IC0xLjI2MiwtMi44MjIgLTIuODIsLTIuODIyIGggLTE5Ljc3NSBjIC0xLjU1NywwIC0yLjgyLDEuMjY1IC0yLjgyLDIuODIyIDAsMS41NTkgMS4yNjQsMi44MiAyLjgyLDIuODIgaCAxNS41NDEgbCAtMTguMjMsMjQuNTQ2IGMgLTAuMzYyLDAuNDg3IC0wLjU1NywxLjA3NyAtMC41NTcsMS42ODIgdiAxLjg0MSBjIDAsMS41NTggMS4yNjQsMi44MjIgMi44MjIsMi44MjIgSCA1LjAzOCBjIDEuNDg4LDAgMi43MDUsLTEuMTUzIDIuODEyLC0yLjYxNCAwLjkzMiwwLjc0MyAxLjk2NywxLjM2NCAzLjEwOSwxLjg0OCAxLjYwNSwwLjY4NCAzLjI5OSwxLjAyMSA1LjEwMiwxLjAyMSAyLjcyMywwIDUuMTUsLTAuNzI2IDcuMjg3LC0yLjE4NyAxLjcyNywtMS4xNzYgMy4wOTIsLTIuNjM5IDQuMDg0LC00LjM4OSAwLjgzMjc5OSwtMS40NzIwOTQgMS40MTgyODQsLTIuNjMzMzUyIDEuMjIxODg5LC0zLjcyOTE4MiAtMC4xNzMwMDMsLTAuOTY1MzE4IC0wLjY5NDkxNCwtMS45NDY0MTkgLTIuMzI2ODY1LC0yLjM3ODM1OCAtMC41OCwwIC0xLjM3NjAyNCwwLjE3NDU0IC0xLjgzMzAyNCwwLjQ5MjU0IC0wLjQ2MywwLjMxNiAtMC43OTMsMC43NDQgLTAuOTgyLDEuMjc1IGwgLTAuNDUzLDAuOTMgYyAtMC42MzEsMS4zNjUgLTEuNTY2LDIuNDQzIC0yLjgwOSwzLjI0NCAtMS4yMzgsMC44MDMgLTIuNjMzLDEuMjAxIC00LjE4OCwxLjIwMSAtMS4wMjMsMCAtMi4wMDQsLTAuMTkxIC0yLjk1NSwtMC41NzkgLTAuOTQxLC0wLjM5IC0xLjc1OCwtMC45MzUgLTIuNDM5LC0xLjY0IEMgOS45ODYsNDAuMzQzIDkuNDQxLDM5LjUyNiA5LjAyNywzOC42MDMgOC42MTcsMzcuNjc5IDguNDEsMzYuNzEgOC40MSwzNS42ODcgdiAtMi40NzYgaCAxNy43MTUgYyAwLDAgMS41MTc3NzQsLTAuMTU0NjYgMi4xODMzNzUsLTAuNzcwNjcyIDAuOTU4NDk2LC0wLjg4NzA4NSAwLjg2NDYyMiwtMi4xNTAzOCAwLjg2NDYyMiwtMi4xNTAzOCAwLDAgLTAuMDQzNTQsLTUuMDY2ODM0IC0wLjMzODM3NiwtNy41NzgxNTQgQyAyOC43MjkwNDgsMjEuODEyNTYzIDI4LjMyNCwyMC4wNDQgMjguMzI0LDIwLjA0NCBaIE0gLTExLjc2Nyw0Mi45MSAyLjk5MSwyMy4wMzYgQyAyLjkxMywyMy42MjMgMi44NywyNC4yMiAyLjg3LDI0LjgyNyB2IDEwLjg2IGMgMCwxLjc5OSAwLjM1LDMuNDk4IDEuMDU5LDUuMTA0IDAuMzI4LDAuNzUyIDAuNzE5LDEuNDU4IDEuMTU2LDIuMTE5IC0wLjAxNiwwIC0wLjAzMSwtMTBlLTQgLTAuMDQ3LC0xMGUtNCBIIC0xMS43NjcgWiBNIDIzLjcxLDI3LjY2NyBIIDguNDA5IHYgLTIuODQxIGMgMCwtMS4wMTUgMC4xODksLTEuOTkgMC41OCwtMi45MTIgMC4zOTEsLTAuOTIyIDAuOTM2LC0xLjc0IDEuNjQ1LC0yLjQ0NCAwLjY5NywtMC43MDMgMS41MTYsLTEuMjQ5IDIuNDM4LC0xLjY0MSAwLjkyMiwtMC4zODggMS45MiwtMC41ODEgMi45OSwtMC41ODEgMS4wMiwwIDIuMDAyLDAuMTkzIDIuOTQ5LDAuNTgxIDAuOTQ5LDAuMzkzIDEuNzY0LDAuOTM4IDIuNDQxLDEuNjQxIDAuNjgyLDAuNzA0IDEuMjI1LDEuNTIxIDEuNjQxLDIuNDQ0IDAuNDE0LDAuOTIyIDAuNjE3LDEuODk2IDAuNjE3LDIuOTEyIHoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIwLjM1IC00LjczNSkiIGNsYXNzPSJjb2xvcmZmZiBzdmdTaGFwZSI+PC9wYXRoPjwvc3ZnPjwvZz48L3N2Zz4="></a>
35
+ <a href="https://doi.org/10.6084/m9.figshare.30260326" alt="figshare"><img src="https://img.shields.io/badge/figshare-pyTMD_test_data-a60845?logo=figshare"></a>
36
+ </td>
37
+ </tr>
38
+ <tr>
39
+ <td><b>License:</b></td>
40
+ <td>
41
+ <a href="https://github.com/pyTMD/pyTMD/blob/main/LICENSE" alt="License"><img src="https://img.shields.io/github/license/pyTMD/pyTMD"></a>
42
+ </td>
43
+ </tr>
44
+ </table>
45
+
46
+ For more information: see the documentation at [pytmd.readthedocs.io](https://pytmd.readthedocs.io/)
47
+
48
+ ## Installation
49
+
50
+ From PyPI:
51
+
52
+ ```bash
53
+ python3 -m pip install pyTMD
54
+ ```
55
+
56
+ To include all optional dependencies:
57
+
58
+ ```bash
59
+ python3 -m pip install pyTMD[all]
60
+ ```
61
+
62
+ Using `conda` or `mamba` from conda-forge:
63
+
64
+ ```bash
65
+ conda install -c conda-forge pytmd
66
+ ```
67
+
68
+ ```bash
69
+ mamba install -c conda-forge pytmd
70
+ ```
71
+
72
+ Development version from GitHub:
73
+
74
+ ```bash
75
+ python3 -m pip install git+https://github.com/pyTMD/pyTMD.git
76
+ ```
77
+
78
+ ### Running with Pixi
79
+
80
+ Alternatively, you can use [Pixi](https://pixi.sh/) for a streamlined workspace environment:
81
+
82
+ 1. Install Pixi following the [installation instructions](https://pixi.sh/latest/#installation)
83
+ 2. Clone the project repository:
84
+
85
+ ```bash
86
+ git clone https://github.com/pyTMD/pyTMD.git
87
+ ```
88
+
89
+ 3. Move into the `pyTMD` directory
90
+
91
+ ```bash
92
+ cd pyTMD
93
+ ```
94
+
95
+ 4. Install dependencies and start JupyterLab:
96
+
97
+ ```bash
98
+ pixi run start
99
+ ```
100
+
101
+ This will automatically create the environment, install all dependencies, and launch JupyterLab in the [notebooks](./doc/source/notebooks/) directory.
102
+
103
+ ## Dependencies
104
+
105
+ - [h5netcdf: Pythonic interface to netCDF4 via h5py](https://h5netcdf.org/)
106
+ - [lxml: processing XML and HTML in Python](https://pypi.python.org/pypi/lxml)
107
+ - [numpy: Scientific Computing Tools For Python](https://www.numpy.org)
108
+ - [platformdirs: Python module for determining platform-specific directories](https://pypi.org/project/platformdirs/)
109
+ - [pyproj: Python interface to PROJ library](https://pypi.org/project/pyproj/)
110
+ - [scipy: Scientific Tools for Python](https://www.scipy.org/)
111
+ - [timescale: Python tools for time and astronomical calculations](https://pypi.org/project/timescale/)
112
+ - [xarray: N-D labeled arrays and datasets in Python](https://docs.xarray.dev/en/stable/)
113
+
114
+ ## References
115
+
116
+ > T. C. Sutterley, S. L. Howard, L. Padman, and M. R. Siegfried,
117
+ > "pyTMD: Python-based tidal prediction software". *Journal of Open Source Software*,
118
+ > 10(116), 8566, (2025). [doi: 10.21105/joss.08566](https://doi.org/10.21105/joss.08566)
119
+ >
120
+ > T. C. Sutterley, T. Markus, T. A. Neumann, M. R. van den Broeke, J. M. van Wessem, and S. R. M. Ligtenberg,
121
+ > "Antarctic ice shelf thickness change from multimission lidar mapping", *The Cryosphere*,
122
+ > 13, 1801-1817, (2019). [doi: 10.5194/tc-13-1801-2019](https://doi.org/10.5194/tc-13-1801-2019)
123
+ >
124
+ > L. Padman, M. R. Siegfried, and H. A. Fricker,
125
+ > "Ocean Tide Influences on the Antarctic and Greenland Ice Sheets", *Reviews of Geophysics*,
126
+ > 56, 142-184, (2018). [doi: 10.1002/2016RG000546](https://doi.org/10.1002/2016RG000546)
127
+
128
+ ## Download
129
+
130
+ The program homepage is:
131
+ <https://github.com/pyTMD/pyTMD>
132
+
133
+ A zip archive of the latest version is available directly at:
134
+ <https://github.com/pyTMD/pyTMD/archive/main.zip>
135
+
136
+ ## Alternative Software
137
+
138
+ perth5 from NASA Goddard Space Flight Center:
139
+ <https://codeberg.org/rray/perth5>
140
+
141
+ Matlab Tide Model Driver from Earth & Space Research:
142
+ <https://github.com/EarthAndSpaceResearch/TMD_Matlab_Toolbox_v2.5>
143
+
144
+ Fortran OSU Tidal Prediction Software:
145
+ <https://www.tpxo.net/otps>
146
+
147
+ ## Disclaimer
148
+
149
+ This package includes software developed at NASA Goddard Space Flight Center (GSFC) and the University of Washington Applied Physics Laboratory (UW-APL).
150
+ It is not sponsored or maintained by the Universities Space Research Association (USRA), AVISO or NASA.
151
+ The software is provided here for your convenience but *with no guarantees whatsoever*.
152
+ It should not be used for coastal navigation or any application that may risk life or property.
153
+
154
+ ## Contributing
155
+
156
+ This project contains work and contributions from the [scientific community](./CONTRIBUTORS.md).
157
+ If you would like to contribute to the project, please have a look at the [contribution guidelines](./doc/source/getting_started/Contributing.rst), [open issues](https://github.com/pyTMD/pyTMD/issues) and [discussions board](https://github.com/pyTMD/pyTMD/discussions).
158
+
159
+ ## Credits
160
+
161
+ The Tidal Model Driver ([TMD](https://github.com/EarthAndSpaceResearch/TMD_Matlab_Toolbox_v2.5)) Matlab Toolbox was developed by Laurie Padman, Lana Erofeeva and Susan Howard.
162
+ An updated version of the TMD Matlab Toolbox ([TMD3](https://github.com/chadagreene/Tide-Model-Driver)) was developed by Chad Greene.
163
+ The OSU Tidal Inversion Software (OTIS) and OSU Tidal Prediction Software ([OTPS](https://www.tpxo.net/otps)) were developed by Lana Erofeeva and Gary Egbert ([copyright OSU](https://www.tpxo.net/tpxo-products-and-registration), licensed for non-commercial use).
164
+ The NASA Goddard Space Flight Center (GSFC) PREdict Tidal Heights (PERTH3) software was developed by Richard Ray and Remko Scharroo.
165
+ An updated and more versatile version of the NASA GSFC tidal prediction software ([PERTH5](https://codeberg.org/rray/perth5)) was developed by Richard Ray.
166
+
167
+ ## License
168
+
169
+ The content of this project is licensed under the [Creative Commons Attribution 4.0 Attribution license](https://creativecommons.org/licenses/by/4.0/) and the source code is licensed under the [MIT license](LICENSE).
@@ -11,6 +11,7 @@ matplotlib and cartopy
11
11
 
12
12
  Documentation is available at https://pytmd.readthedocs.io
13
13
  """
14
+
14
15
  import pyTMD.astro
15
16
  import pyTMD.compute
16
17
  import pyTMD.constituents