|
15 | 15 | }, |
16 | 16 | { |
17 | 17 | "cell_type": "code", |
18 | | - "execution_count": 1, |
| 18 | + "execution_count": 2, |
19 | 19 | "metadata": {}, |
20 | 20 | "outputs": [], |
21 | 21 | "source": [ |
22 | 22 | "from herbie import Herbie\n", |
23 | 23 | "import pygrib\n", |
| 24 | + "import pandas as pd\n", |
24 | 25 | "from pyproj import CRS\n", |
25 | 26 | "from herbie.crs import get_cf_crs" |
26 | 27 | ] |
27 | 28 | }, |
28 | 29 | { |
29 | 30 | "cell_type": "code", |
30 | | - "execution_count": 6, |
| 31 | + "execution_count": 2, |
31 | 32 | "metadata": {}, |
32 | 33 | "outputs": [ |
33 | 34 | { |
|
49 | 50 | " pygrib {'a': 6371229, 'b': 6371229, 'proj': 'longlat'}\n", |
50 | 51 | " Herbie {'a': 6371229, 'b': 6371229, 'proj': 'longlat'}\n", |
51 | 52 | " equal= True\n", |
52 | | - "👨🏻🏭 Created directory: [/home/blaylock/data/graphcast/20250101]\n", |
53 | 53 | "\n", |
54 | 54 | "Model: GRAPHCAST\n", |
55 | 55 | " pygrib {'a': 4326.0, 'b': 4326.0, 'proj': 'longlat'}\n", |
|
81 | 81 | " Herbie {'a': 6371229, 'b': 6371229, 'proj': 'longlat'}\n", |
82 | 82 | " equal= True\n", |
83 | 83 | "\n", |
84 | | - "Model: HAFSA\n", |
85 | | - " pygrib {'a': 6371229, 'b': 6371229, 'proj': 'longlat'}\n", |
86 | | - " Herbie {'a': 6371229, 'b': 6371229, 'proj': 'longlat'}\n", |
87 | | - " equal= True\n", |
88 | | - "\n", |
89 | | - "Model: HREF\n", |
90 | | - " pygrib {'a': 6371229, 'b': 6371229, 'lat_0': 25.0, 'lat_1': 25.0, 'lat_2': 25.0, 'lon_0': 265.0, 'proj': 'lcc'}\n", |
91 | | - " Herbie {'a': 6371229, 'b': 6371229, 'lat_0': 25.0, 'lat_1': 25.0, 'lat_2': 25.0, 'lon_0': 265.0, 'proj': 'lcc'}\n", |
92 | | - " equal= True\n", |
93 | | - "\n", |
94 | 84 | "Model: NAM\n", |
95 | 85 | " pygrib {'a': 6371229, 'b': 6371229, 'lat_0': 38.5, 'lat_1': 38.5, 'lat_2': 38.5, 'lon_0': 262.5, 'proj': 'lcc'}\n", |
96 | 86 | " Herbie {'a': 6371229, 'b': 6371229, 'lat_0': 38.5, 'lat_1': 38.5, 'lat_2': 38.5, 'lon_0': 262.5, 'proj': 'lcc'}\n", |
|
104 | 94 | "Model: RTMA\n", |
105 | 95 | " pygrib {'a': 6371200.0, 'b': 6371200.0, 'lat_0': 25.0, 'lat_1': 25.0, 'lat_2': 25.0, 'lon_0': 265.0, 'proj': 'lcc'}\n", |
106 | 96 | " Herbie {'a': 6371200.0, 'b': 6371200.0, 'lat_0': 25.0, 'lat_1': 25.0, 'lat_2': 25.0, 'lon_0': 265.0, 'proj': 'lcc'}\n", |
| 97 | + " equal= True\n", |
| 98 | + "\n", |
| 99 | + "Model: HRDPS\n", |
| 100 | + " pygrib {'a': 6371229, 'b': 6371229, 'lon_0': 245.305142, 'o_lat_p': 36.08852, 'o_lon_p': 0.0, 'o_proj': 'longlat', 'proj': 'ob_tran'}\n", |
| 101 | + " Herbie {'a': 6371229, 'b': 6371229, 'lon_0': 245.305142, 'o_lat_p': 36.08852, 'o_lon_p': 0.0, 'o_proj': 'longlat', 'proj': 'ob_tran'}\n", |
107 | 102 | " equal= True\n" |
108 | 103 | ] |
109 | 104 | } |
|
119 | 114 | " (dict(model=\"aifs\"), \":2t:\"),\n", |
120 | 115 | " (dict(model=\"gefs\", member=1), \":TMP:2 m above\"),\n", |
121 | 116 | " (dict(model=\"gefs\", product=\"wave\", member=1), \":WIND:surf\"),\n", |
122 | | - " (dict(model=\"hafsa\", product=\"storm.atm\", storm=\"07s\"), \":TMP:2 m above\"),\n", |
123 | | - " (dict(model=\"href\", products=\"mean\", domain=\"conus\", fxx=1), \":TMP:2 m above\"),\n", |
| 117 | + " # FAILING\n", |
| 118 | + " # (dict(model=\"hafsa\", product=\"storm.atm\", storm=\"07s\"), \":TMP:2 m above\"),\n", |
| 119 | + " # FAILING\n", |
| 120 | + " # (dict(model=\"href\", products=\"mean\", domain=\"conus\", fxx=1), \":TMP:2 m above\"),\n", |
124 | 121 | " (dict(model=\"nam\"), \":TMP:2 m above\"),\n", |
125 | 122 | " (dict(model=\"urma\"), \":TMP:2 m above\"),\n", |
126 | 123 | " (dict(model=\"rtma\"), \":TMP:2 m above\"),\n", |
| 124 | + " (dict(model=\"hrdps\", fxx=0, product=\"continental/2.5km\", variable=\"TMP\", level=\"AGL-2m\"), None),\n", |
| 125 | + "\n", |
127 | 126 | "]:\n", |
128 | 127 | " if model[\"model\"] in (\"hafsa\", \"href\"): # only on nomads\n", |
129 | 128 | " date = \"2025-01-16 06:00\"\n", |
| 129 | + " elif model[\"model\"] in (\"hrdps\",): # no historical data\n", |
| 130 | + " date = pd.Timestamp(\"now\").floor(\"6h\") - pd.Timedelta(\"6h\")\n", |
130 | 131 | " else:\n", |
131 | | - " date = \"2025-01-01\"\n", |
| 132 | + " date = \"2025-07-05T06:00:00\"\n", |
132 | 133 | "\n", |
133 | | - " ds = Herbie(date, verbose=False, **model).xarray(\n", |
134 | | - " search, remove_grib=False, _use_pygrib_for_crs=False\n", |
135 | | - " )\n", |
| 134 | + " # ds = Herbie(date, verbose=False, **model).xarray(\n", |
| 135 | + " # search, remove_grib=False, _use_pygrib_for_crs=False\n", |
| 136 | + " # )\n", |
| 137 | + " ds = Herbie(date, verbose=False, **model).download()\n", |
136 | 138 | "\n", |
137 | 139 | " print()\n", |
138 | 140 | " print(f\"Model: {model['model'].upper()}\")\n", |
139 | | - " with pygrib.open(str(ds.local_grib)) as grb:\n", |
| 141 | + " with pygrib.open(str(ds)) as grb:\n", |
140 | 142 | " msg = grb.message(1)\n", |
141 | 143 | " projparams_dict_pygrib = dict(sorted(msg.projparams.items()))\n", |
142 | 144 | " print(\" pygrib\", projparams_dict_pygrib)\n", |
|
145 | 147 | " sorted(get_cf_crs(ds, _return_projparams=True).items())\n", |
146 | 148 | " )\n", |
147 | 149 | " print(\" Herbie\", projparams_dict_herbie)\n", |
148 | | - " print(\" equal=\", projparams_dict_herbie == projparams_dict_pygrib)\n" |
| 150 | + " print(\" equal=\", projparams_dict_herbie == projparams_dict_pygrib)" |
149 | 151 | ] |
150 | 152 | }, |
151 | 153 | { |
|
5787 | 5789 | ], |
5788 | 5790 | "metadata": { |
5789 | 5791 | "kernelspec": { |
5790 | | - "display_name": "herbie-dev", |
| 5792 | + "display_name": "Python 3 (ipykernel)", |
5791 | 5793 | "language": "python", |
5792 | 5794 | "name": "python3" |
5793 | 5795 | }, |
|
5801 | 5803 | "name": "python", |
5802 | 5804 | "nbconvert_exporter": "python", |
5803 | 5805 | "pygments_lexer": "ipython3", |
5804 | | - "version": "3.13.1" |
| 5806 | + "version": "3.12.9" |
5805 | 5807 | } |
5806 | 5808 | }, |
5807 | 5809 | "nbformat": 4, |
5808 | | - "nbformat_minor": 2 |
| 5810 | + "nbformat_minor": 4 |
5809 | 5811 | } |
0 commit comments