From e43a187c4ee567c333f6e7a567b36ba29f1638ac Mon Sep 17 00:00:00 2001 From: "James S. Halgren" Date: Thu, 25 Aug 2022 18:34:49 -0500 Subject: [PATCH] Test streamflow with multiple forecasts --- NWM.ipynb | 282 +++++++++++++++++++----------------------------------- 1 file changed, 100 insertions(+), 182 deletions(-) diff --git a/NWM.ipynb b/NWM.ipynb index 7d1e131..9fd9fbc 100644 --- a/NWM.ipynb +++ b/NWM.ipynb @@ -2008,14 +2008,26 @@ }, { "cell_type": "code", - "execution_count": 104, + "execution_count": 3, "id": "1bda6719-24ef-446a-9854-ab094315d79d", "metadata": {}, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/srv/conda/envs/notebook/lib/python3.9/site-packages/distributed/node.py:179: UserWarning: Port 8787 is already in use.\n", + "Perhaps you already have a cluster running?\n", + "Hosting the HTTP server on port 44151 instead\n", + " warnings.warn(\n", + "2022-08-25 22:18:24,784 - distributed.diskutils - INFO - Found stale lock file and directory '/tmp/dask-worker-space/worker-720btlxi', purging\n", + "2022-08-25 22:18:24,787 - distributed.diskutils - INFO - Found stale lock file and directory '/tmp/dask-worker-space/worker-988znpj7', purging\n" + ] + }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "666ea6b3905c4257a413c9edf9d2dc2d", + "model_id": "24c7587e49af46968a81f3efff9b4ef2", "version_major": 2, "version_minor": 0 }, @@ -2036,14 +2048,14 @@ }, { "cell_type": "code", - "execution_count": 105, + "execution_count": 4, "id": "da19108a-1e4f-4ce3-b3fc-23bce1f45f98", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "666ea6b3905c4257a413c9edf9d2dc2d", + "model_id": "24c7587e49af46968a81f3efff9b4ef2", "version_major": 2, "version_minor": 0 }, @@ -2062,7 +2074,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 5, "id": "2975bf88-6959-49fd-854e-933a6b71f149", "metadata": {}, "outputs": [], @@ -2072,13 +2084,13 @@ }, { "cell_type": "code", - "execution_count": 94, + "execution_count": 6, "id": "14fe3beb-8835-4f86-a765-66c2155089fb", "metadata": {}, "outputs": [], "source": [ "best_hour = 'f001'\n", - "var = 'land'" + "var = 'channel_rt'" ] }, { @@ -2091,20 +2103,21 @@ }, { "cell_type": "code", - "execution_count": 211, + "execution_count": 27, "id": "eb40df27-46b3-4117-8c97-de3bd9405e20", "metadata": {}, "outputs": [], "source": [ "flist = []\n", - "for day in range(22, 23):\n", + "for day in range(22, 23): # TODO: replace this with a formatted date output range\n", " for i in range(24):\n", - " flist.append(f'gcs://national-water-model/nwm.202208{day:02d}/short_range/nwm.t{i:02d}z.short_range.{var}.{best_hour}.conus.nc')" + " for fc in range(1,19):\n", + " flist.append(f'gcs://national-water-model/nwm.202208{day:02d}/short_range/nwm.t{i:02d}z.short_range.{var}.f{fc:03d}.conus.nc')" ] }, { "cell_type": "code", - "execution_count": 212, + "execution_count": 28, "id": "5371207e-59d7-4d16-ad85-4013db565bdf", "metadata": {}, "outputs": [], @@ -2114,7 +2127,7 @@ }, { "cell_type": "code", - "execution_count": 213, + "execution_count": 29, "id": "a8e745de-a919-47e0-871d-25537e2214e7", "metadata": {}, "outputs": [], @@ -2127,7 +2140,7 @@ }, { "cell_type": "code", - "execution_count": 214, + "execution_count": 30, "id": "38283397-0bd5-4d4e-bcf3-2a6de7fd8ebb", "metadata": {}, "outputs": [], @@ -2138,7 +2151,7 @@ }, { "cell_type": "code", - "execution_count": 215, + "execution_count": 31, "id": "70347c32-992e-475a-a663-830ee4cacf66", "metadata": {}, "outputs": [], @@ -2156,7 +2169,7 @@ }, { "cell_type": "code", - "execution_count": 216, + "execution_count": 32, "id": "b3addb49-110d-48e3-be1a-dc06710a3742", "metadata": {}, "outputs": [ @@ -2164,8 +2177,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 2.37 s, sys: 244 ms, total: 2.61 s\n", - "Wall time: 7.85 s\n" + "CPU times: user 11.1 s, sys: 1.01 s, total: 12.1 s\n", + "Wall time: 1min 8s\n" ] } ], @@ -2184,7 +2197,7 @@ }, { "cell_type": "code", - "execution_count": 217, + "execution_count": 33, "id": "c3a116fd-7935-4286-93d7-85ffa0b9a1d8", "metadata": {}, "outputs": [], @@ -2195,17 +2208,17 @@ }, { "cell_type": "code", - "execution_count": 218, + "execution_count": 34, "id": "cda70663-3597-44e6-a837-7022c2c8022f", "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "24" + "432" ] }, - "execution_count": 218, + "execution_count": 34, "metadata": {}, "output_type": "execute_result" } @@ -2216,7 +2229,7 @@ }, { "cell_type": "code", - "execution_count": 220, + "execution_count": 35, "id": "833e8113-aa1a-4f10-9c10-cddd8ee96129", "metadata": {}, "outputs": [], @@ -2225,13 +2238,13 @@ " remote_protocol='gcs',\n", " remote_options={'anon':True},\n", " concat_dims=['time'],\n", - " identical_dims = ['x', 'y'],\n", + " identical_dims = ['COMID'],\n", " )" ] }, { "cell_type": "code", - "execution_count": 221, + "execution_count": 36, "id": "d7e9b2e2-a495-4672-97d0-4aaf4879f88d", "metadata": {}, "outputs": [ @@ -2239,8 +2252,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 145 ms, sys: 14.5 ms, total: 159 ms\n", - "Wall time: 167 ms\n" + "CPU times: user 1.83 s, sys: 133 ms, total: 1.96 s\n", + "Wall time: 2.28 s\n" ] } ], @@ -2251,7 +2264,7 @@ }, { "cell_type": "code", - "execution_count": 222, + "execution_count": 37, "id": "955dc1c6-d5d1-4398-9c43-18326f39ef85", "metadata": {}, "outputs": [ @@ -2259,17 +2272,17 @@ "name": "stderr", "output_type": "stream", "text": [ - "/srv/conda/envs/notebook/lib/python3.9/site-packages/xarray/conventions.py:516: SerializationWarning: variable 'ACCET' has multiple fill values {0, -999900}, decoding all values to NaN.\n", + "/srv/conda/envs/notebook/lib/python3.9/site-packages/xarray/conventions.py:516: SerializationWarning: variable 'nudge' has multiple fill values {0, -999900}, decoding all values to NaN.\n", " new_vars[k] = decode_cf_variable(\n", - "/srv/conda/envs/notebook/lib/python3.9/site-packages/xarray/conventions.py:516: SerializationWarning: variable 'FSNO' has multiple fill values {-9999000, 0}, decoding all values to NaN.\n", + "/srv/conda/envs/notebook/lib/python3.9/site-packages/xarray/conventions.py:516: SerializationWarning: variable 'qBtmVertRunoff' has multiple fill values {-9999000, 0}, decoding all values to NaN.\n", " new_vars[k] = decode_cf_variable(\n", - "/srv/conda/envs/notebook/lib/python3.9/site-packages/xarray/conventions.py:516: SerializationWarning: variable 'SNEQV' has multiple fill values {0, -99990}, decoding all values to NaN.\n", + "/srv/conda/envs/notebook/lib/python3.9/site-packages/xarray/conventions.py:516: SerializationWarning: variable 'qBucket' has multiple fill values {-999900000, 0}, decoding all values to NaN.\n", " new_vars[k] = decode_cf_variable(\n", - "/srv/conda/envs/notebook/lib/python3.9/site-packages/xarray/conventions.py:516: SerializationWarning: variable 'SNOWH' has multiple fill values {-99990000, 0}, decoding all values to NaN.\n", + "/srv/conda/envs/notebook/lib/python3.9/site-packages/xarray/conventions.py:516: SerializationWarning: variable 'qSfcLatRunoff' has multiple fill values {-999900000, 0}, decoding all values to NaN.\n", " new_vars[k] = decode_cf_variable(\n", - "/srv/conda/envs/notebook/lib/python3.9/site-packages/xarray/conventions.py:516: SerializationWarning: variable 'SNOWT_AVG' has multiple fill values {0, -99990}, decoding all values to NaN.\n", + "/srv/conda/envs/notebook/lib/python3.9/site-packages/xarray/conventions.py:516: SerializationWarning: variable 'streamflow' has multiple fill values {0, -999900}, decoding all values to NaN.\n", " new_vars[k] = decode_cf_variable(\n", - "/srv/conda/envs/notebook/lib/python3.9/site-packages/xarray/conventions.py:516: SerializationWarning: variable 'SOILSAT_TOP' has multiple fill values {-9999000, 0}, decoding all values to NaN.\n", + "/srv/conda/envs/notebook/lib/python3.9/site-packages/xarray/conventions.py:516: SerializationWarning: variable 'velocity' has multiple fill values {0, -999900}, decoding all values to NaN.\n", " new_vars[k] = decode_cf_variable(\n" ] } @@ -2287,7 +2300,7 @@ }, { "cell_type": "code", - "execution_count": 223, + "execution_count": 38, "id": "e502a41f-242f-426c-aa51-5904172f883c", "metadata": {}, "outputs": [ @@ -2646,32 +2659,34 @@ " fill: currentColor;\n", "}\n", "
<xarray.Dataset>\n",
-       "Dimensions:         (time: 24, y: 3840, x: 4608, reference_time: 1)\n",
+       "Dimensions:         (time: 24, feature_id: 2776738, reference_time: 1)\n",
        "Coordinates:\n",
+       "  * feature_id      (feature_id) float64 101.0 179.0 181.0 ... 1.18e+09 1.18e+09\n",
        "  * reference_time  (reference_time) datetime64[ns] 2022-08-22\n",
        "  * time            (time) datetime64[ns] 2022-08-22T01:00:00 ... 2022-08-23\n",
-       "  * x               (x) float64 -2.303e+06 -2.302e+06 ... 2.303e+06 2.304e+06\n",
-       "  * y               (y) float64 -1.92e+06 -1.919e+06 ... 1.918e+06 1.919e+06\n",
        "Data variables:\n",
-       "    ACCET           (time, y, x) float64 ...\n",
-       "    FSNO            (time, y, x) float64 ...\n",
-       "    SNEQV           (time, y, x) float64 ...\n",
-       "    SNOWH           (time, y, x) float64 ...\n",
-       "    SNOWT_AVG       (time, y, x) float64 ...\n",
-       "    SOILSAT_TOP     (time, y, x) float64 ...\n",
        "    crs             (time) object b'' b'' b'' b'' b'' ... b'' b'' b'' b'' b''\n",
-       "Attributes:\n",
+       "    nudge           (time, feature_id) float64 ...\n",
+       "    qBtmVertRunoff  (time, feature_id) float64 ...\n",
+       "    qBucket         (time, feature_id) float64 ...\n",
+       "    qSfcLatRunoff   (time, feature_id) float64 ...\n",
+       "    streamflow      (time, feature_id) float64 ...\n",
+       "    velocity        (time, feature_id) float64 ...\n",
+       "Attributes: (12/19)\n",
        "    Conventions:                CF-1.6\n",
-       "    GDAL_DataType:              Generic\n",
        "    NWM_version_number:         v2.2\n",
        "    TITLE:                      OUTPUT FROM NWM v2.2\n",
+       "    cdm_datatype:               Station\n",
        "    code_version:               v5.2.0-beta2\n",
-       "    model_configuration:        short_range\n",
-       "    model_initialization_time:  2022-08-22_00:00:00\n",
-       "    model_output_type:          land\n",
+       "    dev:                        dev_ prefix indicates development/internal me...\n",
+       "    ...                         ...\n",
+       "    model_output_type:          channel_rt\n",
        "    model_output_valid_time:    2022-08-22_01:00:00\n",
        "    model_total_valid_times:    18\n",
-       "    proj4:                      +proj=lcc +units=m +a=6370000.0 +b=6370000.0 ...
    • crs
      (time)
      object
      ...
      _CoordinateAxes :
      latitude longitude
      esri_pe_string :
      GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]];-400 -400 1000000000;-100000 10000;-100000 10000;8.98315284119521E-09;0.001;0.001;IsHighPrecision
      grid_mapping_name :
      latitude longitude
      inverse_flattening :
      298.2572326660156
      long_name :
      CRS definition
      longitude_of_prime_meridian :
      0.0
      semi_major_axis :
      6378137.0
      semi_minor_axis :
      6356752.5
      spatial_ref :
      GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]];-400 -400 1000000000;-100000 10000;-100000 10000;8.98315284119521E-09;0.001;0.001;IsHighPrecision
      transform_name :
      latitude longitude
      array([b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'',\n",
      +       "       b'', b'', b'', b'', b'', b'', b'', b'', b'', b''], dtype=object)
    • nudge
      (time, feature_id)
      float64
      ...
      coordinates :
      latitude longitude
      grid_mapping :
      crs
      long_name :
      Amount of stream flow alteration
      units :
      m3 s-1
      valid_range :
      [-5000000, 5000000]
      [66641712 values with dtype=float64]
    • qBtmVertRunoff
      (time, feature_id)
      float64
      ...
      coordinates :
      latitude longitude
      grid_mapping :
      crs
      long_name :
      Runoff from bottom of soil to bucket
      units :
      m3
      valid_range :
      [0, 20000000]
      [66641712 values with dtype=float64]
    • qBucket
      (time, feature_id)
      float64
      ...
      coordinates :
      latitude longitude
      grid_mapping :
      crs
      long_name :
      Flux from gw bucket
      units :
      m3 s-1
      valid_range :
      [0, 2000000000]
      [66641712 values with dtype=float64]
    • qSfcLatRunoff
      (time, feature_id)
      float64
      ...
      coordinates :
      latitude longitude
      grid_mapping :
      crs
      long_name :
      Runoff from terrain routing
      units :
      m3 s-1
      valid_range :
      [0, 2000000000]
      [66641712 values with dtype=float64]
    • streamflow
      (time, feature_id)
      float64
      ...
      coordinates :
      latitude longitude
      grid_mapping :
      crs
      long_name :
      River Flow
      units :
      m3 s-1
      valid_range :
      [0, 5000000]
      [66641712 values with dtype=float64]
    • velocity
      (time, feature_id)
      float64
      ...
      coordinates :
      latitude longitude
      grid_mapping :
      crs
      long_name :
      River Velocity
      units :
      m s-1
      valid_range :
      [0, 5000000]
      [66641712 values with dtype=float64]
  • Conventions :
    CF-1.6
    NWM_version_number :
    v2.2
    TITLE :
    OUTPUT FROM NWM v2.2
    cdm_datatype :
    Station
    code_version :
    v5.2.0-beta2
    dev :
    dev_ prefix indicates development/internal meta data
    dev_NOAH_TIMESTEP :
    3600
    dev_OVRTSWCRT :
    1
    dev_channelBucket_only :
    0
    dev_channel_only :
    0
    featureType :
    timeSeries
    model_configuration :
    short_range
    model_initialization_time :
    2022-08-22_00:00:00
    model_output_type :
    channel_rt
    model_output_valid_time :
    2022-08-22_01:00:00
    model_total_valid_times :
    18
    proj4 :
    +proj=lcc +units=m +a=6370000.0 +b=6370000.0 +lat_1=30.0 +lat_2=60.0 +lat_0=40.0 +lon_0=-97.0 +x_0=0 +y_0=0 +k_0=1.0 +nadgrids=@
    station_dimension :
    feature_id
    stream_order_output :
    1
  • " ], "text/plain": [ "\n", - "Dimensions: (time: 24, y: 3840, x: 4608, reference_time: 1)\n", + "Dimensions: (time: 24, feature_id: 2776738, reference_time: 1)\n", "Coordinates:\n", + " * feature_id (feature_id) float64 101.0 179.0 181.0 ... 1.18e+09 1.18e+09\n", " * reference_time (reference_time) datetime64[ns] 2022-08-22\n", " * time (time) datetime64[ns] 2022-08-22T01:00:00 ... 2022-08-23\n", - " * x (x) float64 -2.303e+06 -2.302e+06 ... 2.303e+06 2.304e+06\n", - " * y (y) float64 -1.92e+06 -1.919e+06 ... 1.918e+06 1.919e+06\n", "Data variables:\n", - " ACCET (time, y, x) float64 ...\n", - " FSNO (time, y, x) float64 ...\n", - " SNEQV (time, y, x) float64 ...\n", - " SNOWH (time, y, x) float64 ...\n", - " SNOWT_AVG (time, y, x) float64 ...\n", - " SOILSAT_TOP (time, y, x) float64 ...\n", " crs (time) object ...\n", - "Attributes:\n", + " nudge (time, feature_id) float64 ...\n", + " qBtmVertRunoff (time, feature_id) float64 ...\n", + " qBucket (time, feature_id) float64 ...\n", + " qSfcLatRunoff (time, feature_id) float64 ...\n", + " streamflow (time, feature_id) float64 ...\n", + " velocity (time, feature_id) float64 ...\n", + "Attributes: (12/19)\n", " Conventions: CF-1.6\n", - " GDAL_DataType: Generic\n", " NWM_version_number: v2.2\n", " TITLE: OUTPUT FROM NWM v2.2\n", + " cdm_datatype: Station\n", " code_version: v5.2.0-beta2\n", - " model_configuration: short_range\n", - " model_initialization_time: 2022-08-22_00:00:00\n", - " model_output_type: land\n", + " dev: dev_ prefix indicates development/internal me...\n", + " ... ...\n", + " model_output_type: channel_rt\n", " model_output_valid_time: 2022-08-22_01:00:00\n", " model_total_valid_times: 18\n", - " proj4: +proj=lcc +units=m +a=6370000.0 +b=6370000.0 ..." + " proj4: +proj=lcc +units=m +a=6370000.0 +b=6370000.0 ...\n", + " station_dimension: feature_id\n", + " stream_order_output: 1" ] }, - "execution_count": 223, + "execution_count": 38, "metadata": {}, "output_type": "execute_result" } @@ -2729,147 +2743,51 @@ }, { "cell_type": "code", - "execution_count": 227, - "id": "6eef5518-57f8-4158-be10-9b31b2a2e83f", - "metadata": {}, - "outputs": [ - { - "data": {}, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.holoviews_exec.v0+json": "", - "text/html": [ - "
    \n", - "
    \n", - "
    \n", - "" - ], - "text/plain": [ - ":DynamicMap [time]\n", - " :Image [x,y] (SOILSAT_TOP)" - ] - }, - "execution_count": 227, - "metadata": { - "application/vnd.holoviews_exec.v0+json": { - "id": "50584" - } - }, - "output_type": "execute_result" - } - ], - "source": [ - "ds.SOILSAT_TOP.hvplot('x', 'y', rasterize=True)" - ] - }, - { - "cell_type": "markdown", - "id": "c1d43f70-13f4-42b1-89af-3275d223bc52", - "metadata": {}, - "source": [ - "We can focus on a 50 km x 50 km region (approximately Dallas county)" - ] - }, - { - "cell_type": "code", - "execution_count": 225, + "execution_count": 39, "id": "40bc1503-88b4-4060-8e74-5429752a0d1d", "metadata": {}, "outputs": [], "source": [ - "dallas_soilsat = ds.SOILSAT_TOP.sel(x=slice(0e0, 50e3), y = slice(-800e3, -750e3))" + "stream = ds.streamflow.sel(feature_id = \"15812163\")" ] }, { "cell_type": "code", - "execution_count": 226, - "id": "85d2f280-2b84-42e2-a1f4-e97f8b341f3b", + "execution_count": 40, + "id": "16cec96a-b7c2-47a5-ade7-80466f2dfbe3", "metadata": {}, "outputs": [ { - "data": {}, + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 40, "metadata": {}, - "output_type": "display_data" + "output_type": "execute_result" }, { "data": { - "application/vnd.holoviews_exec.v0+json": "", - "text/html": [ - "
    \n", - "
    \n", - "
    \n", - "" - ], + "image/png": "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\n", "text/plain": [ - ":Curve [time] (SOILSAT_TOP)" + "
    " ] }, - "execution_count": 226, "metadata": { - "application/vnd.holoviews_exec.v0+json": { - "id": "50093" - } + "needs_background": "light" }, - "output_type": "execute_result" + "output_type": "display_data" } ], "source": [ - "dallas_soilsat.mean(dim=['x', 'y']).hvplot()" + "stream.plot()" ] }, { "cell_type": "code", "execution_count": null, - "id": "16cec96a-b7c2-47a5-ade7-80466f2dfbe3", + "id": "862ae9f2-bfa8-4904-8fa4-de780e5607c1", "metadata": {}, "outputs": [], "source": []