{ "cells": [ { "cell_type": "markdown", "id": "13b4e1db-4776-4d84-b7fc-01930387455f", "metadata": {}, "source": [ "# CTD profiles - minimal example\n", "\n", "\n", "📥 Download: [`CTD profiles - minimal example.ipynb`](https://github.com/NPIOcean/kval/raw/master/docs/source/examples/notebooks/CTD_profiles_minimal_example.ipynb?raw=true)\n", "\n", "___\n", "\n", "**In this notebook**\n", "\n", "- Load multiple `.cnv` files containing shipboard profiles from a SeaBird CTD.\n", "- Quick overview and basic plots." ] }, { "cell_type": "code", "execution_count": 1, "id": "44d64f2d-6873-444a-b9f4-bc3c1d6a4308", "metadata": {}, "outputs": [], "source": [ "# Import the ctd module from kval.data\n", "from kval.data import ctd \n", "# Set the plotting backed so we can interact with figures\n", "%matplotlib widget " ] }, { "cell_type": "markdown", "id": "095d1e84-ebd3-47aa-a31a-1d5ffd2dda3e", "metadata": {}, "source": [ "## Load data from `.cnv` files into a single xarray Dataset" ] }, { "cell_type": "markdown", "id": "d1f3bce6-496a-44c7-8a1d-80e1dbf4f6ff", "metadata": {}, "source": [ "**Specify a directory** `cnv_dir` where we have `.cnv` files collected from a SBE CTD.\n", "\n", "\n", "____\n", "\n", "***NOTE:*** *Loading the data in this manner will load* all *the* `.cnv` *files in the directory. Make sure* `cnv_dir/` *only contains the files you want to include.*\n", "\n", "___\n", "\n", "***NOTE:*** *In this case, the* `.cnv` *files contain pressure-gridded data. It is also possible to load ungridded profiles - profiles will then be pressure gridded within kval.*" ] }, { "cell_type": "code", "execution_count": 2, "id": "ebaea9f0-f425-40e9-bfbb-cc729e89a8d9", "metadata": {}, "outputs": [], "source": [ "cnv_dir = ('../../../../tests/test_data/'\n", " 'sbe_files/sbe911plus/atwain_cruise_ctds/')" ] }, { "cell_type": "markdown", "id": "e9c4e38c-71c5-4888-9295-a9635033ad19", "metadata": {}, "source": [ "**Load all** `.cnv` **files** into a single xarray\n", "Dataset - the object we will work with and ultimately export to netCDF." ] }, { "cell_type": "code", "execution_count": 3, "id": "44991190-2a70-45c5-9747-eb5dc6c1b3c7", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Found 3 .cnv files in \"../../../../tests/test_data/sbe_files/sbe911plus/atwain_cruise_ctds/\".\n", "NOTE: It seems the input data already binned -> using preexisting binning.\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "33b7290a10254854bfea3b831fa109ba", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Joining profiles together: 0%| | 0/3 [00:00\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
<xarray.Dataset> Size: 93kB\n",
       "Dimensions:            (TIME: 3, PRES: 527)\n",
       "Coordinates:\n",
       "  * PRES               (PRES) float64 4kB 3.0 4.0 5.0 6.0 ... 527.0 528.0 529.0\n",
       "  * TIME               (TIME) float64 24B 1.743e+04 1.743e+04 1.743e+04\n",
       "Data variables:\n",
       "    TEMP               (TIME, PRES) float64 13kB nan 6.362 6.367 ... nan nan nan\n",
       "    PTEMP              (TIME, PRES) float64 13kB nan 6.362 6.367 ... nan nan nan\n",
       "    CNDC               (TIME, PRES) float64 13kB nan 34.68 34.69 ... nan nan nan\n",
       "    PSAL               (TIME, PRES) float64 13kB nan 34.98 34.98 ... nan nan nan\n",
       "    SIGTH              (TIME, PRES) float64 13kB nan 27.49 27.49 ... nan nan nan\n",
       "    CHLA_fluorescence  (TIME, PRES) float64 13kB nan 1.39 1.293 ... nan nan nan\n",
       "    SBE_FLAG           (TIME, PRES) float64 13kB nan 0.0 0.0 0.0 ... nan nan nan\n",
       "    STATION            (TIME) <U5 60B 'AT285' 'AT286' 'AT287'\n",
       "    LATITUDE           (TIME) float64 24B 80.11 80.07 80.04\n",
       "    LONGITUDE          (TIME) float64 24B 9.875 10.38 10.75\n",
       "    CRUISE             <U27 108B '!! CRUISE (Not assigned) !!'\n",
       "    PROCESSING         object 8B None\n",
       "Attributes:\n",
       "    binned:            1 decibars (SBE software)\n",
       "    source_file:       E.g. AT285.HEX, AT285.XMLCON -> AT285.CNV\n",
       "    history:           2017-09-24 to 2017-09-24: Data collection.\\n2018-07-23...\n",
       "    instrument_model:  Sea-Bird SBE 9\n",
       "    featureType:       profile
" ], "text/plain": [ " Size: 93kB\n", "Dimensions: (TIME: 3, PRES: 527)\n", "Coordinates:\n", " * PRES (PRES) float64 4kB 3.0 4.0 5.0 6.0 ... 527.0 528.0 529.0\n", " * TIME (TIME) float64 24B 1.743e+04 1.743e+04 1.743e+04\n", "Data variables:\n", " TEMP (TIME, PRES) float64 13kB nan 6.362 6.367 ... nan nan nan\n", " PTEMP (TIME, PRES) float64 13kB nan 6.362 6.367 ... nan nan nan\n", " CNDC (TIME, PRES) float64 13kB nan 34.68 34.69 ... nan nan nan\n", " PSAL (TIME, PRES) float64 13kB nan 34.98 34.98 ... nan nan nan\n", " SIGTH (TIME, PRES) float64 13kB nan 27.49 27.49 ... nan nan nan\n", " CHLA_fluorescence (TIME, PRES) float64 13kB nan 1.39 1.293 ... nan nan nan\n", " SBE_FLAG (TIME, PRES) float64 13kB nan 0.0 0.0 0.0 ... nan nan nan\n", " STATION (TIME) AT285.CNV\n", " history: 2017-09-24 to 2017-09-24: Data collection.\\n2018-07-23...\n", " instrument_model: Sea-Bird SBE 9\n", " featureType: profile" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ds" ] }, { "cell_type": "markdown", "id": "5ace5000-bef4-48c4-a052-c988c953da36", "metadata": {}, "source": [ "### Quick map\n", "\n", "Show a quick map of the profile locations. May or may not be useful depending on your dataset." ] }, { "cell_type": "code", "execution_count": 5, "id": "3e57262d-4d93-4f49-9daa-79243045b4e4", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "5459834f28424554968bf8a40981fb0a", "version_major": 2, "version_minor": 0 }, "text/plain": [ "HBox(children=(Button(description='Close', style=ButtonStyle()), Button(description='Original Size', style=But…" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "c699b49f903f4870882b51281ad39500", "version_major": 2, "version_minor": 0 }, "image/png": "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", "text/html": [ "\n", "
\n", "
\n", " Figure\n", "
\n", " \n", "
\n", " " ], "text/plain": [ "Canvas(header_visible=False, toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Bac…" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ctd.map(ds)" ] }, { "cell_type": "markdown", "id": "80ddfbc9-7d5a-4518-9279-6f3367fb264a", "metadata": {}, "source": [ "### Contour plots \n", "\n", "The `ctd.contour()` function displays two contour plots. You can interactively change which variables are displayed and adjust the axes." ] }, { "cell_type": "code", "execution_count": 6, "id": "1bd5216d-75a1-4591-a0e0-a503c5634b47", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "8eacf880a71c4ed689e73d807cc7b94a", "version_major": 2, "version_minor": 0 }, "text/plain": [ "VBox(children=(HBox(children=(Dropdown(description='Variable 1:', options=('TEMP', 'PTEMP', 'CNDC', 'PSAL', 'S…" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ctd.contour(ds)" ] }, { "cell_type": "markdown", "id": "7084fd09-51d0-4adb-bc20-325e28bfe183", "metadata": {}, "source": [ "### Profile plots\n", "\n", "Have a quick look at individual profiles. Interactively select profiles and variables." ] }, { "cell_type": "code", "execution_count": 7, "id": "3ab66d84-efec-4800-a037-b7f4b5ebf572", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "aa5bfb708d85456f8c38530f803a6c6a", "version_major": 2, "version_minor": 0 }, "text/plain": [ "VBox(children=(HBox(children=(IntSlider(value=0, continuous_update=False, description='Profile #:', layout=Lay…" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ctd.inspect_profiles(ds)" ] } ], "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.12.10" } }, "nbformat": 4, "nbformat_minor": 5 }