Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,5 @@ uv.lock
# build files
**/*.egg-info
**/__pycache__
**/build
**/build
**/.ipynb_checkpoints/
3 changes: 0 additions & 3 deletions cdippy/plots/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +0,0 @@
from . import annual_hs_boxplot, compendium, sst_climatology

__all__ = ["annual_hs_boxplot", "compendium", "sst_climatology"]
1 change: 1 addition & 0 deletions cdippy/stndata.py
Original file line number Diff line number Diff line change
Expand Up @@ -269,6 +269,7 @@ def get_series(
self.force_64bands = force_64bands

self.set_request_info(start, end, vrs, pub_set, apply_mask)
print(self.deploy_num)

if prefix == "xyz" and self.deploy_num is None:
return self.__merge_xyz_request()
Expand Down
62 changes: 31 additions & 31 deletions docs/examples/cdippy-boxplot.ipynb

Large diffs are not rendered by default.

30 changes: 15 additions & 15 deletions docs/examples/cdippy-compendium.ipynb

Large diffs are not rendered by default.

53 changes: 31 additions & 22 deletions docs/examples/cdippy-quality-control.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,23 @@
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"outputs": [
{
"ename": "FileNotFoundError",
"evalue": "[Errno 2] No such file or directory: 'pyproject.toml'",
"output_type": "error",
"traceback": [
"\u001b[31m---------------------------------------------------------------------------\u001b[39m",
"\u001b[31mFileNotFoundError\u001b[39m Traceback (most recent call last)",
"\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[1]\u001b[39m\u001b[32m, line 10\u001b[39m\n\u001b[32m 7\u001b[39m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mcalendar\u001b[39;00m\n\u001b[32m 9\u001b[39m \u001b[38;5;66;03m# CDIP imports\u001b[39;00m\n\u001b[32m---> \u001b[39m\u001b[32m10\u001b[39m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mcdippy\u001b[39;00m\n\u001b[32m 11\u001b[39m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mcdippy\u001b[39;00m\u001b[34;01m.\u001b[39;00m\u001b[34;01mstndata\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m StnData\n",
"\u001b[36mFile \u001b[39m\u001b[32m/opt/homebrew/Caskroom/miniconda/base/envs/cdippy/lib/python3.13/site-packages/cdippy/__init__.py:2\u001b[39m\n\u001b[32m 1\u001b[39m \u001b[38;5;66;03m# import public top-level modules\u001b[39;00m\n\u001b[32m----> \u001b[39m\u001b[32m2\u001b[39m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01m.\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m cdipnc, nchashes, ncstats, ndbc, plotting, spectra, stndata\n\u001b[32m 4\u001b[39m \u001b[38;5;66;03m# import plots library for backward compatibility\u001b[39;00m\n\u001b[32m 5\u001b[39m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01m.\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m plots \u001b[38;5;28;01mas\u001b[39;00m plots \u001b[38;5;66;03m# noqa: F401\u001b[39;00m\n",
"\u001b[36mFile \u001b[39m\u001b[32m/opt/homebrew/Caskroom/miniconda/base/envs/cdippy/lib/python3.13/site-packages/cdippy/cdipnc.py:11\u001b[39m\n\u001b[32m 8\u001b[39m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mnumbers\u001b[39;00m\n\u001b[32m 9\u001b[39m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mbisect\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m bisect_left, bisect_right\n\u001b[32m---> \u001b[39m\u001b[32m11\u001b[39m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mcdippy\u001b[39;00m\u001b[34;01m.\u001b[39;00m\u001b[34;01mndbc\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mas\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mndbc\u001b[39;00m\n\u001b[32m 12\u001b[39m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mcdippy\u001b[39;00m\u001b[34;01m.\u001b[39;00m\u001b[34;01mutils\u001b[39;00m\u001b[34;01m.\u001b[39;00m\u001b[34;01mutils\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mas\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mcu\u001b[39;00m\n\u001b[32m 13\u001b[39m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mcdippy\u001b[39;00m\u001b[34;01m.\u001b[39;00m\u001b[34;01mutils\u001b[39;00m\u001b[34;01m.\u001b[39;00m\u001b[34;01murls\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mas\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01muu\u001b[39;00m\n",
"\u001b[36mFile \u001b[39m\u001b[32m/opt/homebrew/Caskroom/miniconda/base/envs/cdippy/lib/python3.13/site-packages/cdippy/ndbc.py:6\u001b[39m\n\u001b[32m 3\u001b[39m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mos\u001b[39;00m\n\u001b[32m 4\u001b[39m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mdatetime\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m datetime, timezone\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mcdippy\u001b[39;00m\u001b[34;01m.\u001b[39;00m\u001b[34;01mutils\u001b[39;00m\u001b[34;01m.\u001b[39;00m\u001b[34;01murls\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mas\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01muu\u001b[39;00m\n\u001b[32m 7\u001b[39m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mcdippy\u001b[39;00m\u001b[34;01m.\u001b[39;00m\u001b[34;01mutils\u001b[39;00m\u001b[34;01m.\u001b[39;00m\u001b[34;01mutils\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mas\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mcu\u001b[39;00m\n\u001b[32m 9\u001b[39m sos_base = \u001b[33m\"\u001b[39m\u001b[33mhttps://sdf.ndbc.noaa.gov/sos/server.php\u001b[39m\u001b[33m\"\u001b[39m\n",
"\u001b[36mFile \u001b[39m\u001b[32m/opt/homebrew/Caskroom/miniconda/base/envs/cdippy/lib/python3.13/site-packages/cdippy/utils/urls.py:8\u001b[39m\n\u001b[32m 5\u001b[39m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01murllib\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m request, error\n\u001b[32m 6\u001b[39m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mxml\u001b[39;00m\u001b[34;01m.\u001b[39;00m\u001b[34;01metree\u001b[39;00m\u001b[34;01m.\u001b[39;00m\u001b[34;01mElementTree\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mas\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mET\u001b[39;00m\n\u001b[32m----> \u001b[39m\u001b[32m8\u001b[39m \u001b[38;5;28;01mwith\u001b[39;00m \u001b[38;5;28;43mopen\u001b[39;49m\u001b[43m(\u001b[49m\u001b[33;43m\"\u001b[39;49m\u001b[33;43mpyproject.toml\u001b[39;49m\u001b[33;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[33;43m\"\u001b[39;49m\u001b[33;43mrb\u001b[39;49m\u001b[33;43m\"\u001b[39;49m\u001b[43m)\u001b[49m \u001b[38;5;28;01mas\u001b[39;00m f:\n\u001b[32m 9\u001b[39m pyproject = tomllib.load(f)\n\u001b[32m 11\u001b[39m version = pyproject[\u001b[33m\"\u001b[39m\u001b[33mproject\u001b[39m\u001b[33m\"\u001b[39m][\u001b[33m\"\u001b[39m\u001b[33mversion\u001b[39m\u001b[33m\"\u001b[39m]\n",
"\u001b[31mFileNotFoundError\u001b[39m: [Errno 2] No such file or directory: 'pyproject.toml'"
]
}
],
"source": [
"import netCDF4\n",
"import numpy as np\n",
Expand Down Expand Up @@ -87,16 +103,20 @@
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ASTORIA CANYON, OR BUOY - 179p1\n"
"ename": "NameError",
"evalue": "name 'StnData' is not defined",
"output_type": "error",
"traceback": [
"\u001b[31m---------------------------------------------------------------------------\u001b[39m",
"\u001b[31mNameError\u001b[39m Traceback (most recent call last)",
"\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[4]\u001b[39m\u001b[32m, line 2\u001b[39m\n\u001b[32m 1\u001b[39m \u001b[38;5;66;03m##- Get Station Dataset object\u001b[39;00m\n\u001b[32m----> \u001b[39m\u001b[32m2\u001b[39m stn_data = \u001b[43mStnData\u001b[49m(stn)\n\u001b[32m 4\u001b[39m \u001b[38;5;66;03m##- Get metadata (i.e. information about individual deployments)\u001b[39;00m\n\u001b[32m 5\u001b[39m meta = stn_data.get_stn_meta()\n",
"\u001b[31mNameError\u001b[39m: name 'StnData' is not defined"
]
}
],
"source": [
"##- Get Station Dataset object\n",
"stn_data = cdippy.stndata.StnData(stn)\n",
"stn_data = StnData(stn)\n",
"\n",
"##- Get metadata (i.e. information about individual deployments)\n",
"meta = stn_data.get_stn_meta()\n",
Expand Down Expand Up @@ -129,24 +149,13 @@
},
{
"cell_type": "code",
"execution_count": 9,
"execution_count": null,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"dict_keys(['waveTime', 'waveDp', 'waveHs', 'waveTp'])"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"outputs": [],
"source": [
"##- Use CDIPPY to convert input start/end date strings to datetime objects\n",
"start = cdippy.utils.cdip_datetime(sdate)\n",
"end = cdippy.utils.cdip_datetime(edate)\n",
"start = cdippy.utils.utils.cdip_datetime(sdate)\n",
"end = cdippy.utils.utils.cdip_datetime(edate)\n",
"\n",
"##- Grab default data using 'get_series' function, will mask out all non-public data\n",
"data = stn_data.get_series(start, end, params)\n",
Expand Down Expand Up @@ -365,7 +374,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.13.2"
"version": "3.13.5"
}
},
"nbformat": 4,
Expand Down
12 changes: 6 additions & 6 deletions docs/examples/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@ Table below describes what can be found within each interactive notebook

| Thumbnail | Title | Description | Notebook |
|-----------|-------|-------------|----------|
| ![compendium_thumb](thumbnails/cdippy-compendium.png) | **Compendium Plot** | Visualize common CDIP parameters over time | [`cdippy-compendium.ipynb`](cdippy-compendium.ipynb) |
| ![sst_thumb](thumbnails/cdippy-sst.png) | **Sea Surface Temperature Plot** | Visualize CDIP SST over time | [`cdippy-sst.ipynb`](cdippy-sst.ipynb) |
| ![boxplot_thumb](thumbnails/cdippy-boxplot.png) | **Wave Height Seasonal Boxplot** | Compute statistics and visualize CDIP wave heights | [`cdippy-boxplot.ipynb`](cdippy-boxplot.ipynb) |
| ![xyz_thumb](thumbnails/cdippy-xyz.png) | **XYZ Displacements Plot** | Access and visualize CDIP xyz displacement data | [`cdippy-xyz.ipynb`](cdippy-xyz.ipynb) |
| ![spectrum1d_thumb](thumbnails/cdippy-spectrum1d.png) | **Wave Spectrum 1D Plot** | Access and visualize CDIP 1-D wave spectra data | [`cdippy-spectrum1d.ipynb`](cdippy-spectrum1d.ipynb) |
| ![spectrum2d_thumb](thumbnails/cdippy-spectrum2d.png) | **Wave Spectrum 2D Plot** | Access and visualize CDIP 2-D wave spectra data | [`cdippy-spectrum2d.ipynb`](cdippy-spectrum2d.ipynb) |
| ![compendium_thumb](thumbnails/cdippy-compendium.png) | **Compendium Plot** | Visualize common CDIP parameters over time | [📖 View](cdippy-compendium.ipynb) <br> [⬇️ Download](cdippy-compendium.ipynb){:download} |
| ![sst_thumb](thumbnails/cdippy-sst.png) | **Sea Surface Temperature Plot** | Visualize CDIP SST over time | [📖 View](cdippy-sst.ipynb) <br> [⬇️ Download](cdippy-sst.ipynb){:download} |
| ![boxplot_thumb](thumbnails/cdippy-boxplot.png) | **Wave Height Seasonal Boxplot** | Compute statistics and visualize CDIP wave heights | [📖 View](cdippy-boxplot.ipynb) <br> [⬇️ Download](cdippy-boxplot.ipynb){:download} |
| ![xyz_thumb](thumbnails/cdippy-xyz.png) | **XYZ Displacements Plot** | Access and visualize CDIP xyz displacement data | [📖 View](cdippy-xyz.ipynb) <br> [⬇️ Download](cdippy-xyz.ipynb){:download} |
| ![spectrum1d_thumb](thumbnails/cdippy-spectrum1d.png) | **Wave Spectrum 1D Plot** | Access and visualize CDIP 1-D wave spectra data | [📖 View](cdippy-spectrum1d.ipynb) <br> [⬇️ Download](cdippy-spectrum1d.ipynb){:download} |
| ![spectrum2d_thumb](thumbnails/cdippy-spectrum2d.png) | **Wave Spectrum 2D Plot** | Access and visualize CDIP 2-D wave spectra data | [📖 View](cdippy-spectrum2d.ipynb) <br> [⬇️ Download](cdippy-spectrum2d.ipynb){:download} |

7 changes: 7 additions & 0 deletions mkdocs.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,15 @@
site_name: CDIPpy Docs

# theme:
# name: material

markdown_extensions:
- attr_list

plugins:
- macros
- search
- mkdocs-jupyter
- mkdocstrings:
handlers:
python:
Expand Down
2 changes: 2 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,9 @@ dev = [
"coverage",
"flake8",
"mkdocs",
"mkdocs-jupyter",
"mkdocs-macros-plugin",
"mkdocs-material",
"mkdocstrings[python]",
"mkdocs-material",
"mkdocstrings[python]",
Expand Down