{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## How to use ciso on unstructured grids" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "execution": { "iopub.execute_input": "2026-09-29T15:02:35.593589Z", "iopub.status.busy": "2026-09-29T15:02:35.593421Z", "iopub.status.idle": "2026-09-29T15:02:38.612786Z", "shell.execute_reply": "2026-09-29T15:02:38.611690Z" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Downloading data from 'https://github.com/ioos/ciso/releases/download/v0.2.2.post0/NECOFS_GOM3_FORECAST.nc' to file '/home/runner/.cache/pooch/9c4b68fb11876bd3d409003c22c81edb-NECOFS_GOM3_FORECAST.nc'.\n" ] } ], "source": [ "import warnings\n", "\n", "import iris\n", "import pooch\n", "\n", "fname = \"NECOFS_GOM3_FORECAST.nc\"\n", "version = \"v0.2.2.post0\"\n", "url = f\"https://github.com/ioos/ciso/releases/download/{version}/{fname}\"\n", "\n", "fname = pooch.retrieve(\n", " url,\n", " known_hash=\"sha256:05589ca949e112f60b6a8ca1ac0eb1f1c6239659b4443151731a177135fe58d0\",\n", ")\n", "\n", "\n", "with warnings.catch_warnings():\n", " warnings.simplefilter(\"ignore\")\n", " cubes = iris.load_raw(fname)" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "execution": { "iopub.execute_input": "2026-09-29T15:02:38.614537Z", "iopub.status.busy": "2026-09-29T15:02:38.614295Z", "iopub.status.idle": "2026-09-29T15:02:38.634033Z", "shell.execute_reply": "2026-09-29T15:02:38.633144Z" } }, "outputs": [], "source": [ "salt = cubes.extract_cube(\"sea_water_salinity\")[-1, ...]\n", "\n", "lon = salt.coord(axis=\"X\").points\n", "lat = salt.coord(axis=\"Y\").points" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "execution": { "iopub.execute_input": "2026-09-29T15:02:38.635840Z", "iopub.status.busy": "2026-09-29T15:02:38.635656Z", "iopub.status.idle": "2026-09-29T15:02:38.675808Z", "shell.execute_reply": "2026-09-29T15:02:38.674839Z" } }, "outputs": [], "source": [ "p = salt.coord(\"sea_surface_height_above_reference_ellipsoid\").points\n", "q = salt.data" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "execution": { "iopub.execute_input": "2026-09-29T15:02:38.677576Z", "iopub.status.busy": "2026-09-29T15:02:38.677409Z", "iopub.status.idle": "2026-09-29T15:02:38.692240Z", "shell.execute_reply": "2026-09-29T15:02:38.691318Z" } }, "outputs": [], "source": [ "import numpy as np\n", "\n", "from ciso import zslice\n", "\n", "p0 = -25\n", "isoslice = zslice(q, p, -50)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "execution": { "iopub.execute_input": "2026-09-29T15:02:38.694239Z", "iopub.status.busy": "2026-09-29T15:02:38.693918Z", "iopub.status.idle": "2026-09-29T15:02:38.698059Z", "shell.execute_reply": "2026-09-29T15:02:38.697309Z" } }, "outputs": [], "source": [ "from numpy import ma\n", "\n", "# Cannot tricontourf with NaNs.\n", "isoslice = ma.masked_invalid(isoslice)\n", "vmin, vmax = isoslice.min(), isoslice.max()\n", "isoslice = isoslice.filled(fill_value=-999)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "execution": { "iopub.execute_input": "2026-09-29T15:02:38.699610Z", "iopub.status.busy": "2026-09-29T15:02:38.699451Z", "iopub.status.idle": "2026-09-29T15:02:39.784436Z", "shell.execute_reply": "2026-09-29T15:02:39.783565Z" } }, "outputs": [], "source": [ "import cartopy.crs as ccrs\n", "import matplotlib.pyplot as plt\n", "from cartopy.mpl.gridliner import LATITUDE_FORMATTER, LONGITUDE_FORMATTER\n", "\n", "_plate_carree = ccrs.PlateCarree()\n", "\n", "\n", "def make_map(projection=_plate_carree):\n", " fig, ax = plt.subplots(\n", " figsize=(9, 13),\n", " subplot_kw={\"projection\": projection},\n", " )\n", " gl = ax.gridlines(draw_labels=True)\n", " gl.right_labels = gl.top_labels = False\n", " gl.xformatter = LONGITUDE_FORMATTER\n", " gl.yformatter = LATITUDE_FORMATTER\n", " ax.coastlines(\"50m\")\n", " return fig, ax" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "execution": { "iopub.execute_input": "2026-09-29T15:02:39.786429Z", "iopub.status.busy": "2026-09-29T15:02:39.785995Z", "iopub.status.idle": "2026-09-29T15:02:42.235214Z", "shell.execute_reply": "2026-09-29T15:02:42.234323Z" } }, "outputs": [], "source": [ "import gridgeo\n", "\n", "grid = gridgeo.GridGeo(fname, standard_name=\"sea_water_salinity\")" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "execution": { "iopub.execute_input": "2026-09-29T15:02:42.237064Z", "iopub.status.busy": "2026-09-29T15:02:42.236854Z", "iopub.status.idle": "2026-09-29T15:02:43.489339Z", "shell.execute_reply": "2026-09-29T15:02:43.488499Z" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/runner/work/ciso/ciso/.pixi/envs/py314/lib/python3.14/site-packages/cartopy/io/__init__.py:241: DownloadWarning: Downloading: https://naturalearth.s3.amazonaws.com/50m_physical/ne_50m_coastline.zip\n", " warnings.warn(f'Downloading: {url}', DownloadWarning)\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = make_map()\n", "extent = [lon.min(), lon.max(), lat.min(), lat.max()]\n", "ax.set_extent(extent)\n", "\n", "levels = np.linspace(vmin, vmax, 20)\n", "\n", "kw = {\"alpha\": 0.9, \"levels\": levels}\n", "cs = ax.tricontourf(grid.triang, isoslice, **kw)\n", "\n", "kw = {\"shrink\": 0.5, \"orientation\": \"vertical\"}\n", "cbar = fig.colorbar(cs, **kw)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.14.6" } }, "nbformat": 4, "nbformat_minor": 4 }