{ "cells": [ { "cell_type": "markdown", "metadata": { "id": "mtMFWRVnwY0f" }, "source": [ "# STOFS 2D" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/asascience-open/xarray-subset-grid/blob/main/docs/examples/stofs_2d.ipynb)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We use the Stofs-2d-Global Fields-CWL dataset to compute a subset selector and reuse it" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Install required libraries\n", "# !pip install -q xarray_subset_grid@git+https://github.com/asascience-open/xarray-subset-grid.git\n", "# !pip install -q s3fs cftime xarray cf-xarray fsspec dask h5netcdf" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 435 }, "id": "WzHpywpMwY0n", "outputId": "7f423d44-f68a-4488-dbb1-8fa10455086f" }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
<xarray.Dataset> Size: 20GB\n",
       "Dimensions:      (time: 186, node: 12785004, nele: 24875336, nvertex: 3,\n",
       "                  mesh: 1, nbou: 262, nvel: 12421)\n",
       "Coordinates:\n",
       "  * time         (time) datetime64[ns] 1kB 2024-08-07T01:00:00 ... 2024-08-14...\n",
       "    x            (node) float64 102MB dask.array<chunksize=(511401,), meta=np.ndarray>\n",
       "    y            (node) float64 102MB dask.array<chunksize=(511401,), meta=np.ndarray>\n",
       "Dimensions without coordinates: node, nele, nvertex, mesh, nbou, nvel\n",
       "Data variables:\n",
       "    element      (nele, nvertex) int32 299MB dask.array<chunksize=(2763927, 1), meta=np.ndarray>\n",
       "    adcirc_mesh  (mesh) int32 4B dask.array<chunksize=(1,), meta=np.ndarray>\n",
       "    nvell        (nbou) int32 1kB dask.array<chunksize=(262,), meta=np.ndarray>\n",
       "    max_nvell    int32 4B ...\n",
       "    ibtype       (nbou) int32 1kB dask.array<chunksize=(262,), meta=np.ndarray>\n",
       "    nbvv         (nvel) int32 50kB dask.array<chunksize=(12421,), meta=np.ndarray>\n",
       "    depth        (node) float64 102MB dask.array<chunksize=(511401,), meta=np.ndarray>\n",
       "    zeta         (time, node) float64 19GB dask.array<chunksize=(1, 511401), meta=np.ndarray>\n",
       "Attributes: (12/50)\n",
       "    _FillValue:         -99999.0\n",
       "    model:              ADCIRC\n",
       "    version:            noaa.stofs.2d.glo.v2.1.0r1.v55.12\n",
       "    git_hash:           23947fbd9683d0ef48f12e6ce62d45d18bc27ff3\n",
       "    grid_type:          Triangular\n",
       "    description:        2024080706 :-6 hr nowcast and +180 hr forecast ! 32 C...\n",
       "    ...                 ...\n",
       "    sfea0:              45.0\n",
       "    cf:                 0.0005\n",
       "    eslm:               -0.2\n",
       "    cori:               0.0\n",
       "    ntif:               8\n",
       "    nbfr:               0
" ], "text/plain": [ " Size: 20GB\n", "Dimensions: (time: 186, node: 12785004, nele: 24875336, nvertex: 3,\n", " mesh: 1, nbou: 262, nvel: 12421)\n", "Coordinates:\n", " * time (time) datetime64[ns] 1kB 2024-08-07T01:00:00 ... 2024-08-14...\n", " x (node) float64 102MB dask.array\n", " y (node) float64 102MB dask.array\n", "Dimensions without coordinates: node, nele, nvertex, mesh, nbou, nvel\n", "Data variables:\n", " element (nele, nvertex) int32 299MB dask.array\n", " adcirc_mesh (mesh) int32 4B dask.array\n", " nvell (nbou) int32 1kB dask.array\n", " max_nvell int32 4B ...\n", " ibtype (nbou) int32 1kB dask.array\n", " nbvv (nvel) int32 50kB dask.array\n", " depth (node) float64 102MB dask.array\n", " zeta (time, node) float64 19GB dask.array\n", "Attributes: (12/50)\n", " _FillValue: -99999.0\n", " model: ADCIRC\n", " version: noaa.stofs.2d.glo.v2.1.0r1.v55.12\n", " git_hash: 23947fbd9683d0ef48f12e6ce62d45d18bc27ff3\n", " grid_type: Triangular\n", " description: 2024080706 :-6 hr nowcast and +180 hr forecast ! 32 C...\n", " ... ...\n", " sfea0: 45.0\n", " cf: 0.0005\n", " eslm: -0.2\n", " cori: 0.0\n", " ntif: 8\n", " nbfr: 0" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import cf_xarray #noqa\n", "import fsspec\n", "import xarray as xr\n", "\n", "import xarray_subset_grid\n", "\n", "# Open the dataset from NODD s3 bucket directly\n", "fs = fsspec.filesystem(\"s3\", anon=True)\n", "ds_cwl = xr.open_dataset(\n", " fs.open(\n", " \"s3://noaa-gestofs-pds/stofs_2d_glo.20240807/stofs_2d_glo.t06z.fields.cwl.nc\"\n", " ),\n", " chunks={},\n", " drop_variables=['nvel']\n", ")\n", "\n", "ds_cwl" ] }, { "cell_type": "markdown", "metadata": { "id": "x-A2kbpYa-7G" }, "source": [ "Make the dataset CF compliant" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "id": "21LQ8NAFwY0v" }, "outputs": [], "source": [ "ds_cwl = xarray_subset_grid.grids.ugrid.assign_ugrid_topology(ds_cwl)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 35 }, "id": "aTp9T5w7wY0x", "outputId": "77ef166f-c08f-459e-cada-590530d9c90b" }, "outputs": [ { "data": { "application/vnd.google.colaboratory.intrinsic+json": { "type": "string" }, "text/plain": [ "'Dataset size: 19.629483356 Gb'" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "f\"Dataset size: {ds_cwl.nbytes * 1.0e-9} Gb\"" ] }, { "cell_type": "markdown", "metadata": { "id": "MoMm_GNvwY0y" }, "source": [ "### Example BBOX\n", "\n", "Drawn with https://geojson.io\n", "\n", "![image.png](example_data/image.png)" ] }, { "cell_type": "markdown", "metadata": { "id": "6UHg8nKQZRVG" }, "source": [ "Compute the subset selector. \n", "Specify the selector name for easier accessibility. (optional)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "o8655obSwY0z", "outputId": "e810be20-35b7-4e1f-93c9-60034bec1e2a" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 17.6 s, sys: 1.92 s, total: 19.5 s\n", "Wall time: 58.3 s\n" ] }, { "data": { "text/plain": [ " - northeastUSA2d" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%%time\n", "\n", "bbox = (-70, 40, -60, 50)\n", "name = 'northeastUSA2d'\n", "\n", "bbox_selector = ds_cwl.xsg.grid.compute_bbox_subset_selector(ds_cwl, bbox, name)\n", "bbox_selector" ] }, { "cell_type": "markdown", "metadata": { "id": "CTljtYz_ZadD" }, "source": [ "Use the subset selector to slice the dataset. This is fast because the computation is already done" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 452 }, "id": "NKOW5A1AZVEW", "outputId": "8dd61935-c14d-4bc3-c57d-db7856558a05" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 255 ms, sys: 0 ns, total: 255 ms\n", "Wall time: 253 ms\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
<xarray.Dataset> Size: 547MB\n",
       "Dimensions:      (time: 186, node: 356230, nele: 686355, nvertex: 3, mesh: 1,\n",
       "                  nbou: 262, nvel: 12421)\n",
       "Coordinates:\n",
       "  * time         (time) datetime64[ns] 1kB 2024-08-07T01:00:00 ... 2024-08-14...\n",
       "    x            (node) float64 3MB dask.array<chunksize=(79,), meta=np.ndarray>\n",
       "    y            (node) float64 3MB dask.array<chunksize=(79,), meta=np.ndarray>\n",
       "Dimensions without coordinates: node, nele, nvertex, mesh, nbou, nvel\n",
       "Data variables:\n",
       "    element      (nele, nvertex) int32 8MB dask.array<chunksize=(44090, 1), meta=np.ndarray>\n",
       "    adcirc_mesh  (mesh) int32 4B dask.array<chunksize=(1,), meta=np.ndarray>\n",
       "    nvell        (nbou) int32 1kB dask.array<chunksize=(262,), meta=np.ndarray>\n",
       "    max_nvell    int32 4B ...\n",
       "    ibtype       (nbou) int32 1kB dask.array<chunksize=(262,), meta=np.ndarray>\n",
       "    nbvv         (nvel) int32 50kB dask.array<chunksize=(12421,), meta=np.ndarray>\n",
       "    depth        (node) float64 3MB dask.array<chunksize=(79,), meta=np.ndarray>\n",
       "    zeta         (time, node) float64 530MB dask.array<chunksize=(1, 79), meta=np.ndarray>\n",
       "Attributes: (12/50)\n",
       "    _FillValue:         -99999.0\n",
       "    model:              ADCIRC\n",
       "    version:            noaa.stofs.2d.glo.v2.1.0r1.v55.12\n",
       "    git_hash:           23947fbd9683d0ef48f12e6ce62d45d18bc27ff3\n",
       "    grid_type:          Triangular\n",
       "    description:        2024080706 :-6 hr nowcast and +180 hr forecast ! 32 C...\n",
       "    ...                 ...\n",
       "    sfea0:              45.0\n",
       "    cf:                 0.0005\n",
       "    eslm:               -0.2\n",
       "    cori:               0.0\n",
       "    ntif:               8\n",
       "    nbfr:               0
" ], "text/plain": [ " Size: 547MB\n", "Dimensions: (time: 186, node: 356230, nele: 686355, nvertex: 3, mesh: 1,\n", " nbou: 262, nvel: 12421)\n", "Coordinates:\n", " * time (time) datetime64[ns] 1kB 2024-08-07T01:00:00 ... 2024-08-14...\n", " x (node) float64 3MB dask.array\n", " y (node) float64 3MB dask.array\n", "Dimensions without coordinates: node, nele, nvertex, mesh, nbou, nvel\n", "Data variables:\n", " element (nele, nvertex) int32 8MB dask.array\n", " adcirc_mesh (mesh) int32 4B dask.array\n", " nvell (nbou) int32 1kB dask.array\n", " max_nvell int32 4B ...\n", " ibtype (nbou) int32 1kB dask.array\n", " nbvv (nvel) int32 50kB dask.array\n", " depth (node) float64 3MB dask.array\n", " zeta (time, node) float64 530MB dask.array\n", "Attributes: (12/50)\n", " _FillValue: -99999.0\n", " model: ADCIRC\n", " version: noaa.stofs.2d.glo.v2.1.0r1.v55.12\n", " git_hash: 23947fbd9683d0ef48f12e6ce62d45d18bc27ff3\n", " grid_type: Triangular\n", " description: 2024080706 :-6 hr nowcast and +180 hr forecast ! 32 C...\n", " ... ...\n", " sfea0: 45.0\n", " cf: 0.0005\n", " eslm: -0.2\n", " cori: 0.0\n", " ntif: 8\n", " nbfr: 0" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%%time\n", "\n", "ds_subset_cwl = bbox_selector.select(ds_cwl)\n", "ds_subset_cwl" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 35 }, "id": "RA-O7wKWZiHA", "outputId": "aea78a2d-7c5c-483c-ee10-d3432917162e" }, "outputs": [ { "data": { "application/vnd.google.colaboratory.intrinsic+json": { "type": "string" }, "text/plain": [ "'Dataset size: 0.546909296 Gb'" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "f\"Dataset size: {ds_subset_cwl.nbytes * 1.0e-9} Gb\"" ] }, { "cell_type": "markdown", "metadata": { "id": "nOKHWSoeZyEi" }, "source": [ "We can save the selector to disk. (as a pickle file) \n", "Use the `save_to_bytes` function to return the selector as a bytes object. \n", "To get a unique filename, you can use the `get_hashname` function." ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 35 }, "id": "NsfPNQBNZzsI", "outputId": "9e3751ab-b435-4cbd-a6c0-8e7d5813dba8" }, "outputs": [ { "data": { "application/vnd.google.colaboratory.intrinsic+json": { "type": "string" }, "text/plain": [ "'northeastUSA2d_bb3d126e.pkl'" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "selector_bytes = bbox_selector.save_to_bytes()\n", "filepath = bbox_selector.get_hashname()\n", "\n", "with open(filepath, 'wb') as f:\n", " f.write(selector_bytes)" ] }, { "cell_type": "markdown", "metadata": { "id": "KwJRl6GSZ5kI" }, "source": [ "Open a selector using a bytes object.\n", "This retains the subclass of the selector (i.e, UGridSelector, SGridSelector, etc)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "zU247L2QZ1_O", "outputId": "997b8a0e-f27f-4620-8392-ad45df9e45df" }, "outputs": [ { "data": { "text/plain": [ " - northeastUSA2d" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from xarray_subset_grid import Selector\n", "\n", "selector_bytes = open(filepath, 'rb').read()\n", "\n", "loaded_bbox_selector = Selector(selector_bytes)\n", "\n", "loaded_bbox_selector" ] }, { "cell_type": "markdown", "metadata": { "id": "1y_7FQPmZ85i" }, "source": [ "Test if both the selectors are same." ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "KRoJpqVdZ9xL", "outputId": "bd3273d0-aac7-41cc-a68e-b55a23b82d2c" }, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bbox_selector == loaded_bbox_selector" ] }, { "cell_type": "markdown", "metadata": { "id": "JQ-PSVpnZ7oQ" }, "source": [ "Now we can load in a different STOFS-2D file, like the Fields-SWL file. \n", "To subset a SWL dataset, first compute a selector using the CWL dataset and then reuse the selector. \n", "This way, we can avoid the error that occurs during the normal subset method." ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "id": "P6rA5uFLaF4C" }, "outputs": [], "source": [ "ds_swl = xr.open_dataset(\n", " fs.open(\n", " \"s3://noaa-gestofs-pds/stofs_2d_glo.20240807/stofs_2d_glo.t06z.fields.swl.nc\"\n", " ),\n", " chunks={},\n", " drop_variables=['nvel']\n", ")" ] }, { "cell_type": "markdown", "metadata": { "id": "mLNvz_1JaNNn" }, "source": [ "And then slice it with the same selector! \n", "To subset a SWL dataset, first compute a selector using the CWL dataset and then reuse the selector." ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 452 }, "id": "cNYZW2hpaIxD", "outputId": "550d2166-7cc1-4e34-e7f8-545246bb5bd9" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 380 ms, sys: 1.63 ms, total: 381 ms\n", "Wall time: 410 ms\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
<xarray.Dataset> Size: 547MB\n",
       "Dimensions:      (time: 186, node: 356230, nele: 686355, nvertex: 3, mesh: 1,\n",
       "                  nbou: 262, nvel: 12421)\n",
       "Coordinates:\n",
       "  * time         (time) datetime64[ns] 1kB 2024-08-07T01:00:00 ... 2024-08-14...\n",
       "    x            (node) float64 3MB dask.array<chunksize=(79,), meta=np.ndarray>\n",
       "    y            (node) float64 3MB dask.array<chunksize=(79,), meta=np.ndarray>\n",
       "Dimensions without coordinates: node, nele, nvertex, mesh, nbou, nvel\n",
       "Data variables:\n",
       "    element      (nele, nvertex) int32 8MB dask.array<chunksize=(44090, 1), meta=np.ndarray>\n",
       "    adcirc_mesh  (mesh) int32 4B dask.array<chunksize=(1,), meta=np.ndarray>\n",
       "    nvell        (nbou) int32 1kB dask.array<chunksize=(262,), meta=np.ndarray>\n",
       "    max_nvell    int32 4B ...\n",
       "    ibtype       (nbou) int32 1kB dask.array<chunksize=(262,), meta=np.ndarray>\n",
       "    nbvv         (nvel) int32 50kB dask.array<chunksize=(12421,), meta=np.ndarray>\n",
       "    depth        (node) float64 3MB dask.array<chunksize=(79,), meta=np.ndarray>\n",
       "    zeta         (time, node) float64 530MB dask.array<chunksize=(1, 79), meta=np.ndarray>\n",
       "Attributes: (12/50)\n",
       "    _FillValue:         -99999.0\n",
       "    model:              ADCIRC\n",
       "    version:            noaa.stofs.2d.glo.v2.1.0r1.v55.12\n",
       "    git_hash:           23947fbd9683d0ef48f12e6ce62d45d18bc27ff3\n",
       "    grid_type:          Triangular\n",
       "    description:        2024080706 :-6 hr nowcast and +180 hr forecast ! 32 C...\n",
       "    ...                 ...\n",
       "    sfea0:              45.0\n",
       "    cf:                 0.0005\n",
       "    eslm:               -0.2\n",
       "    cori:               0.0\n",
       "    ntif:               8\n",
       "    nbfr:               0
" ], "text/plain": [ " Size: 547MB\n", "Dimensions: (time: 186, node: 356230, nele: 686355, nvertex: 3, mesh: 1,\n", " nbou: 262, nvel: 12421)\n", "Coordinates:\n", " * time (time) datetime64[ns] 1kB 2024-08-07T01:00:00 ... 2024-08-14...\n", " x (node) float64 3MB dask.array\n", " y (node) float64 3MB dask.array\n", "Dimensions without coordinates: node, nele, nvertex, mesh, nbou, nvel\n", "Data variables:\n", " element (nele, nvertex) int32 8MB dask.array\n", " adcirc_mesh (mesh) int32 4B dask.array\n", " nvell (nbou) int32 1kB dask.array\n", " max_nvell int32 4B ...\n", " ibtype (nbou) int32 1kB dask.array\n", " nbvv (nvel) int32 50kB dask.array\n", " depth (node) float64 3MB dask.array\n", " zeta (time, node) float64 530MB dask.array\n", "Attributes: (12/50)\n", " _FillValue: -99999.0\n", " model: ADCIRC\n", " version: noaa.stofs.2d.glo.v2.1.0r1.v55.12\n", " git_hash: 23947fbd9683d0ef48f12e6ce62d45d18bc27ff3\n", " grid_type: Triangular\n", " description: 2024080706 :-6 hr nowcast and +180 hr forecast ! 32 C...\n", " ... ...\n", " sfea0: 45.0\n", " cf: 0.0005\n", " eslm: -0.2\n", " cori: 0.0\n", " ntif: 8\n", " nbfr: 0" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%%time\n", "\n", "ds_subset_swl = bbox_selector.select(ds_cwl)\n", "ds_subset_swl" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 489 }, "id": "fIKRTPtabkXY", "outputId": "30e7aca7-e4a6-4150-9f61-5b5dfffaf53b" }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ds_subset_cwl.isel(time=0).depth.plot()" ] } ], "metadata": { "colab": { "provenance": [] }, "kernelspec": { "display_name": "venv", "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.10.13" } }, "nbformat": 4, "nbformat_minor": 0 }