{ "cells": [ { "attachments": {}, "cell_type": "markdown", "id": "c5747acf", "metadata": {}, "source": [ "# GEFS\n", "\n", "This notebook demonstrates using the Global Ensemble Forecast System. It is available on [AWS](https://registry.opendata.aws/noaa-gefs/) for 2017 to present." ] }, { "cell_type": "code", "execution_count": 1, "id": "e405b560", "metadata": {}, "outputs": [], "source": [ "from herbie import Herbie\n", "from herbie.toolbox import EasyMap, pc\n", "from herbie import paint\n", "\n", "import matplotlib.pyplot as plt" ] }, { "attachments": {}, "cell_type": "markdown", "id": "5e436d63", "metadata": {}, "source": [ "The GEFS model product could be any of the following:\n", "- `'atmos.5'` - Half degree atmos PRIMARY fields (pgrb2ap5); ~83 most common variables.\n", "- `'atmos.5b'` - Half degree atmos SECONDARY fields (pgrb2bp5); ~500 least common variables\n", "- `'atmos.25'` - Quarter degree atmos PRIMARY fields (pgrb2sp25); ~35 most common variables\n", "- `'wave'` - Global wave products.\n", "- `'chem.5'` - Chemistry fields on 0.5 degree grid\n", "- `'chem.25'` - Chemistry fields on 0.25 degree grid\n", "\n", "You also must specify a `member`. For the atmos output, this should be something like `0` or `\"c00\"` for control member, `1`-`30` or `\"p01\"`-`\"p30\"` for members 1-30, or `'avg'` or `'mean'` for the ensemble mean, `'spr'` for ensemble spread." ] }, { "cell_type": "code", "execution_count": 2, "id": "86032456", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "✅ Found ┊ model=gefs ┊ \u001b[3mproduct=atmos.5\u001b[0m ┊ \u001b[38;2;41;130;13m2023-Jan-04 12:00 UTC\u001b[92m F00\u001b[0m ┊ \u001b[38;2;255;153;0m\u001b[3mGRIB2 @ aws\u001b[0m ┊ \u001b[38;2;255;153;0m\u001b[3mIDX @ aws\u001b[0m\n" ] }, { "data": { "text/plain": [ "\u001b[48;2;255;255;255m\u001b[38;2;136;33;27m▌\u001b[0m\u001b[38;2;12;53;118m\u001b[48;2;240;234;210m▌\u001b[38;2;0;0;0m\u001b[1mHerbie\u001b[0m GEFS model \u001b[3matmos.5\u001b[0m product initialized \u001b[38;2;41;130;13m2023-Jan-04 12:00 UTC\u001b[92m F00\u001b[0m ┊ \u001b[38;2;255;153;0m\u001b[3msource=aws\u001b[0m" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "H = Herbie(\n", " \"2023-01-04 12:00\",\n", " model=\"gefs\",\n", " product=\"atmos.5\",\n", " member=\"mean\",\n", ")\n", "H" ] }, { "cell_type": "code", "execution_count": 3, "id": "b47adf85", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'atmos.5': 'Half degree atmos PRIMARY fields (pgrb2ap5); ~83 most common variables.',\n", " 'atmos.5b': 'Half degree atmos SECONDARY fields (pgrb2bp5); ~500 least common variables',\n", " 'atmos.25': 'Quarter degree atmos PRIMARY fields (pgrb2sp25); ~35 most common variables',\n", " 'wave': 'Global wave products.',\n", " 'chem.5': 'Chemistry fields on 0.5 degree grid',\n", " 'chem.25': 'Chemistry fields on 0.25 degree grid'}" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Show all the available products (from the model template file)\n", "H.PRODUCTS" ] }, { "cell_type": "code", "execution_count": 4, "id": "36218a3e", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
| \n", " | grib_message | \n", "start_byte | \n", "end_byte | \n", "range | \n", "reference_time | \n", "valid_time | \n", "variable | \n", "level | \n", "forecast_time | \n", "? | \n", "search_this | \n", "
|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | \n", "1 | \n", "0 | \n", "224943.0 | \n", "0-224943 | \n", "2023-01-04 12:00:00 | \n", "2023-01-04 12:00:00 | \n", "HGT | \n", "10 mb | \n", "anl | \n", "ens mean | \n", ":HGT:10 mb:anl:ens mean | \n", "
| 1 | \n", "2 | \n", "224944 | \n", "353985.0 | \n", "224944-353985 | \n", "2023-01-04 12:00:00 | \n", "2023-01-04 12:00:00 | \n", "TMP | \n", "10 mb | \n", "anl | \n", "ens mean | \n", ":TMP:10 mb:anl:ens mean | \n", "
| 2 | \n", "3 | \n", "353986 | \n", "387270.0 | \n", "353986-387270 | \n", "2023-01-04 12:00:00 | \n", "2023-01-04 12:00:00 | \n", "RH | \n", "10 mb | \n", "anl | \n", "ens mean | \n", ":RH:10 mb:anl:ens mean | \n", "
| 3 | \n", "4 | \n", "387271 | \n", "641626.0 | \n", "387271-641626 | \n", "2023-01-04 12:00:00 | \n", "2023-01-04 12:00:00 | \n", "UGRD | \n", "10 mb | \n", "anl | \n", "ens mean | \n", ":UGRD:10 mb:anl:ens mean | \n", "
| 4 | \n", "5 | \n", "641627 | \n", "881485.0 | \n", "641627-881485 | \n", "2023-01-04 12:00:00 | \n", "2023-01-04 12:00:00 | \n", "VGRD | \n", "10 mb | \n", "anl | \n", "ens mean | \n", ":VGRD:10 mb:anl:ens mean | \n", "
| ... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
| 66 | \n", "67 | \n", "13100932 | \n", "13361478.0 | \n", "13100932-13361478 | \n", "2023-01-04 12:00:00 | \n", "2023-01-04 12:00:00 | \n", "VGRD | \n", "10 m above ground | \n", "anl | \n", "ens mean | \n", ":VGRD:10 m above ground:anl:ens mean | \n", "
| 67 | \n", "68 | \n", "13361479 | \n", "13520799.0 | \n", "13361479-13520799 | \n", "2023-01-04 12:00:00 | \n", "2023-01-04 12:00:00 | \n", "PWAT | \n", "entire atmosphere (considered as a single layer) | \n", "anl | \n", "ens mean | \n", ":PWAT:entire atmosphere (considered as a singl... | \n", "
| 68 | \n", "69 | \n", "13520800 | \n", "13665976.0 | \n", "13520800-13665976 | \n", "2023-01-04 12:00:00 | \n", "2023-01-04 12:00:00 | \n", "CAPE | \n", "180-0 mb above ground | \n", "anl | \n", "ens mean | \n", ":CAPE:180-0 mb above ground:anl:ens mean | \n", "
| 69 | \n", "70 | \n", "13665977 | \n", "13762088.0 | \n", "13665977-13762088 | \n", "2023-01-04 12:00:00 | \n", "2023-01-04 12:00:00 | \n", "CIN | \n", "180-0 mb above ground | \n", "anl | \n", "ens mean | \n", ":CIN:180-0 mb above ground:anl:ens mean | \n", "
| 70 | \n", "71 | \n", "13762089 | \n", "NaN | \n", "13762089- | \n", "2023-01-04 12:00:00 | \n", "2023-01-04 12:00:00 | \n", "PRMSL | \n", "mean sea level | \n", "anl | \n", "ens mean | \n", ":PRMSL:mean sea level:anl:ens mean | \n", "
71 rows × 11 columns
\n", "| \n", " | grib_message | \n", "start_byte | \n", "end_byte | \n", "range | \n", "reference_time | \n", "valid_time | \n", "variable | \n", "level | \n", "forecast_time | \n", "? | \n", "search_this | \n", "
|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | \n", "1 | \n", "0 | \n", "224943.0 | \n", "0-224943 | \n", "2023-01-04 12:00:00 | \n", "2023-01-04 12:00:00 | \n", "HGT | \n", "10 mb | \n", "anl | \n", "ens mean | \n", ":HGT:10 mb:anl:ens mean | \n", "
| 5 | \n", "6 | \n", "881486 | \n", "1113633.0 | \n", "881486-1113633 | \n", "2023-01-04 12:00:00 | \n", "2023-01-04 12:00:00 | \n", "HGT | \n", "50 mb | \n", "anl | \n", "ens mean | \n", ":HGT:50 mb:anl:ens mean | \n", "
| 10 | \n", "11 | \n", "1829912 | \n", "2058353.0 | \n", "1829912-2058353 | \n", "2023-01-04 12:00:00 | \n", "2023-01-04 12:00:00 | \n", "HGT | \n", "100 mb | \n", "anl | \n", "ens mean | \n", ":HGT:100 mb:anl:ens mean | \n", "
| 15 | \n", "16 | \n", "2853920 | \n", "3078453.0 | \n", "2853920-3078453 | \n", "2023-01-04 12:00:00 | \n", "2023-01-04 12:00:00 | \n", "HGT | \n", "200 mb | \n", "anl | \n", "ens mean | \n", ":HGT:200 mb:anl:ens mean | \n", "
| 20 | \n", "21 | \n", "3750171 | \n", "3972302.0 | \n", "3750171-3972302 | \n", "2023-01-04 12:00:00 | \n", "2023-01-04 12:00:00 | \n", "HGT | \n", "250 mb | \n", "anl | \n", "ens mean | \n", ":HGT:250 mb:anl:ens mean | \n", "
| 25 | \n", "26 | \n", "4665076 | \n", "4885222.0 | \n", "4665076-4885222 | \n", "2023-01-04 12:00:00 | \n", "2023-01-04 12:00:00 | \n", "HGT | \n", "300 mb | \n", "anl | \n", "ens mean | \n", ":HGT:300 mb:anl:ens mean | \n", "
| 30 | \n", "31 | \n", "5575673 | \n", "5819612.0 | \n", "5575673-5819612 | \n", "2023-01-04 12:00:00 | \n", "2023-01-04 12:00:00 | \n", "HGT | \n", "500 mb | \n", "anl | \n", "ens mean | \n", ":HGT:500 mb:anl:ens mean | \n", "
| 35 | \n", "36 | \n", "6505417 | \n", "6760482.0 | \n", "6505417-6760482 | \n", "2023-01-04 12:00:00 | \n", "2023-01-04 12:00:00 | \n", "HGT | \n", "700 mb | \n", "anl | \n", "ens mean | \n", ":HGT:700 mb:anl:ens mean | \n", "
| 40 | \n", "41 | \n", "7642597 | \n", "7908461.0 | \n", "7642597-7908461 | \n", "2023-01-04 12:00:00 | \n", "2023-01-04 12:00:00 | \n", "HGT | \n", "850 mb | \n", "anl | \n", "ens mean | \n", ":HGT:850 mb:anl:ens mean | \n", "
| 46 | \n", "47 | \n", "9144964 | \n", "9419014.0 | \n", "9144964-9419014 | \n", "2023-01-04 12:00:00 | \n", "2023-01-04 12:00:00 | \n", "HGT | \n", "925 mb | \n", "anl | \n", "ens mean | \n", ":HGT:925 mb:anl:ens mean | \n", "
| 55 | \n", "56 | \n", "11237567 | \n", "11523718.0 | \n", "11237567-11523718 | \n", "2023-01-04 12:00:00 | \n", "2023-01-04 12:00:00 | \n", "HGT | \n", "1000 mb | \n", "anl | \n", "ens mean | \n", ":HGT:1000 mb:anl:ens mean | \n", "
| 57 | \n", "58 | \n", "11777787 | \n", "11930299.0 | \n", "11777787-11930299 | \n", "2023-01-04 12:00:00 | \n", "2023-01-04 12:00:00 | \n", "HGT | \n", "surface | \n", "anl | \n", "ens mean | \n", ":HGT:surface:anl:ens mean | \n", "
<xarray.Dataset> Size: 1MB\n",
"Dimensions: (latitude: 361, longitude: 720)\n",
"Coordinates:\n",
" time datetime64[ns] 8B 2023-01-04T12:00:00\n",
" step timedelta64[ns] 8B 00:00:00\n",
" atmosphereSingleLayer float64 8B 0.0\n",
" * latitude (latitude) float64 3kB 90.0 89.5 89.0 ... -89.5 -90.0\n",
" * longitude (longitude) float64 6kB 0.0 0.5 1.0 ... 359.0 359.5\n",
" valid_time datetime64[ns] 8B 2023-01-04T12:00:00\n",
" gribfile_projection object 8B None\n",
"Data variables:\n",
" pwat (latitude, longitude) float32 1MB 4.3 4.3 ... 1.0 1.0\n",
"Attributes:\n",
" GRIB_edition: 2\n",
" GRIB_centre: kwbc\n",
" GRIB_centreDescription: US National Weather Service - NCEP\n",
" GRIB_subCentre: 2\n",
" Conventions: CF-1.7\n",
" institution: US National Weather Service - NCEP\n",
" model: gefs\n",
" product: atmos.5\n",
" description: Global Ensemble Forecast System (GEFS)\n",
" remote_grib: https://noaa-gefs-pds.s3.amazonaws.com/gefs.2023...\n",
" local_grib: /home/blaylock/data/gefs/20230104/subset_f4ef1a3...\n",
" search: PWAT<xarray.Dataset> Size: 1MB\n",
"Dimensions: (latitude: 361, longitude: 720)\n",
"Coordinates:\n",
" time datetime64[ns] 8B 2023-01-04T12:00:00\n",
" step timedelta64[ns] 8B 00:00:00\n",
" isobaricInhPa float64 8B 500.0\n",
" * latitude (latitude) float64 3kB 90.0 89.5 89.0 ... -89.5 -90.0\n",
" * longitude (longitude) float64 6kB 0.0 0.5 1.0 ... 359.0 359.5\n",
" valid_time datetime64[ns] 8B 2023-01-04T12:00:00\n",
" gribfile_projection object 8B None\n",
"Data variables:\n",
" gh (latitude, longitude) float32 1MB 5.248e+03 ... 5.02...\n",
"Attributes:\n",
" GRIB_edition: 2\n",
" GRIB_centre: kwbc\n",
" GRIB_centreDescription: US National Weather Service - NCEP\n",
" GRIB_subCentre: 2\n",
" Conventions: CF-1.7\n",
" institution: US National Weather Service - NCEP\n",
" model: gefs\n",
" product: atmos.5\n",
" description: Global Ensemble Forecast System (GEFS)\n",
" remote_grib: https://noaa-gefs-pds.s3.amazonaws.com/gefs.2023...\n",
" local_grib: /home/blaylock/data/gefs/20230104/subset_f4efbd3...\n",
" search: HGT:500 mb<xarray.Dataset> Size: 1MB\n",
"Dimensions: (latitude: 361, longitude: 720)\n",
"Coordinates:\n",
" number int64 8B 5\n",
" time datetime64[ns] 8B 2022-01-01\n",
" step timedelta64[ns] 8B 00:00:00\n",
" heightAboveGround float64 8B 2.0\n",
" * latitude (latitude) float64 3kB 90.0 89.5 89.0 ... -89.5 -90.0\n",
" * longitude (longitude) float64 6kB 0.0 0.5 1.0 ... 359.0 359.5\n",
" valid_time datetime64[ns] 8B 2022-01-01\n",
" gribfile_projection object 8B None\n",
"Data variables:\n",
" t2m (latitude, longitude) float32 1MB 244.5 244.5 ... 252.3\n",
"Attributes:\n",
" GRIB_edition: 2\n",
" GRIB_centre: kwbc\n",
" GRIB_centreDescription: US National Weather Service - NCEP\n",
" GRIB_subCentre: 2\n",
" Conventions: CF-1.7\n",
" institution: US National Weather Service - NCEP\n",
" model: gefs\n",
" product: atmos.5\n",
" description: Global Ensemble Forecast System (GEFS)\n",
" remote_grib: https://noaa-gefs-pds.s3.amazonaws.com/gefs.2022...\n",
" local_grib: /home/blaylock/data/gefs/20220101/subset_04ef8ac...\n",
" search: TMP:2 m<xarray.Dataset> Size: 4MB\n",
"Dimensions: (latitude: 721, longitude: 1440)\n",
"Coordinates:\n",
" number int64 8B 0\n",
" time datetime64[ns] 8B 2017-03-14\n",
" step timedelta64[ns] 8B 15:00:00\n",
" heightAboveGround float64 8B 2.0\n",
" * latitude (latitude) float64 6kB 90.0 89.75 89.5 ... -89.75 -90.0\n",
" * longitude (longitude) float64 12kB 0.0 0.25 0.5 ... 359.5 359.8\n",
" valid_time datetime64[ns] 8B 2017-03-14T15:00:00\n",
" gribfile_projection object 8B None\n",
"Data variables:\n",
" t2m (latitude, longitude) float32 4MB 242.8 242.8 ... 225.7\n",
"Attributes:\n",
" GRIB_edition: 2\n",
" GRIB_centre: kwbc\n",
" GRIB_centreDescription: US National Weather Service - NCEP\n",
" GRIB_subCentre: 2\n",
" Conventions: CF-1.7\n",
" institution: US National Weather Service - NCEP\n",
" model: gefs_reforecast\n",
" product: GEFSv12/reforecast\n",
" description: Global Ensemble Forecast System (GEFS)\n",
" remote_grib: /home/blaylock/data/gefs_reforecast/20170314/tmp...\n",
" local_grib: /home/blaylock/data/gefs_reforecast/20170314/sub...\n",
" search: :15 hour fcst:| \n", " | variable | \n", "level | \n", "a | \n", "b | \n", "c | \n", "
|---|---|---|---|---|---|
| 0 | \n", "acpcp | \n", "sfc | \n", "2015010100 | \n", "c00.grib2 | \n", "None | \n", "
| 1 | \n", "apcp | \n", "sfc | \n", "2015010100 | \n", "c00.grib2 | \n", "None | \n", "
| 2 | \n", "cape | \n", "sfc | \n", "2015010100 | \n", "c00.grib2 | \n", "None | \n", "
| 3 | \n", "cin | \n", "sfc | \n", "2015010100 | \n", "c00.grib2 | \n", "None | \n", "
| 4 | \n", "dlwrf | \n", "sfc | \n", "2015010100 | \n", "c00.grib2 | \n", "None | \n", "
| ... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
| 56 | \n", "vgrd | \n", "pvor | \n", "2015010100 | \n", "c00.grib2 | \n", "None | \n", "
| 57 | \n", "vvel | \n", "pres | \n", "2015010100 | \n", "c00.grib2 | \n", "None | \n", "
| 58 | \n", "vvel | \n", "pres | \n", "abv700mb | \n", "2015010100 | \n", "c00.grib2 | \n", "
| 59 | \n", "watr | \n", "sfc | \n", "2015010100 | \n", "c00.grib2 | \n", "None | \n", "
| 60 | \n", "weasd | \n", "sfc | \n", "2015010100 | \n", "c00.grib2 | \n", "None | \n", "
61 rows × 5 columns
\n", "