Note
Go to the end to download the full example code.
Running StormCast Inference#
Basic StormCast inference workflow.
This example will demonstrate how to run a simple inference workflow to generate a basic determinstic forecast using StormCast. For details about the stormcast model, see
Set Up#
All workflows inside Earth2Studio require constructed components to be
handed to them. In this example, let’s take a look at the most basic:
earth2studio.run.deterministic()
.
def deterministic(
time: list[str] | list[datetime] | list[np.datetime64],
nsteps: int,
prognostic: PrognosticModel,
data: DataSource,
io: IOBackend,
output_coords: CoordSystem = OrderedDict({}),
device: torch.device | None = None,
) -> IOBackend:
"""Built in deterministic workflow.
This workflow creates a determinstic inference pipeline to produce a forecast
prediction using a prognostic model.
Parameters
----------
time : list[str] | list[datetime] | list[np.datetime64]
List of string, datetimes or np.datetime64
nsteps : int
Number of forecast steps
prognostic : PrognosticModel
Prognostic model
data : DataSource
Data source
io : IOBackend
IO object
output_coords: CoordSystem, optional
IO output coordinate system override, by default OrderedDict({})
device : torch.device, optional
Device to run inference on, by default None
Returns
-------
IOBackend
Output IO object
"""
Thus, we need the following:
Prognostic Model: Use the built in StormCast Model
earth2studio.models.px.StormCast
.Datasource: Pull data from the HRRR data api
earth2studio.data.HRRR
.IO Backend: Let’s save the outputs into a Zarr store
earth2studio.io.ZarrBackend
.
StormCast also requires a conditioning data source. We use a forecast data source here,
GFS_FX earth2studio.data.GFS_FX
, but a non-forecast data source such as ARCO
could also be used with appropriate time stamps.
from datetime import datetime, timedelta
from loguru import logger
from tqdm import tqdm
logger.remove()
logger.add(lambda msg: tqdm.write(msg, end=""), colorize=True)
import os
os.makedirs("outputs", exist_ok=True)
from dotenv import load_dotenv
load_dotenv() # TODO: make common example prep function
from earth2studio.data import GFS_FX, HRRR
from earth2studio.io import ZarrBackend
from earth2studio.models.px import StormCast
# Load the default model package which downloads the check point from NGC
package = StormCast.load_default_package()
model = StormCast.load_model(package)
# Create the data source
data = HRRR()
# Create and set the conditioning data source
conditioning_data_source = GFS_FX()
model.conditioning_data_source = conditioning_data_source
# Create the IO handler, store in memory
io = ZarrBackend()
/localhome/local-ngeneva/.cache/earth2studio/stormcast/metadata.zarr.zip
Execute the Workflow#
With all components initialized, running the workflow is a single line of Python code. Workflow will return the provided IO object back to the user, which can be used to then post process. Some have additional APIs that can be handy for post-processing or saving to file. Check the API docs for more information.
For the forecast we will predict for 4 hours
import earth2studio.run as run
nsteps = 4
today = datetime.today() - timedelta(days=1)
date = today.isoformat().split("T")[0]
io = run.deterministic([date], nsteps, model, data, io)
print(io.root.tree())
2025-03-27 02:01:12.913 | INFO | earth2studio.run:deterministic:75 - Running simple workflow!
2025-03-27 02:01:12.913 | INFO | earth2studio.run:deterministic:82 - Inference device: cuda
Fetching HRRR data: 0%| | 0/99 [00:00<?, ?it/s]
Fetching HRRR data: 1%| | 1/99 [00:01<01:57, 1.20s/it]
Fetching HRRR data: 2%|▏ | 2/99 [00:01<01:27, 1.11it/s]
Fetching HRRR data: 3%|▎ | 3/99 [00:02<01:18, 1.23it/s]
Fetching HRRR data: 4%|▍ | 4/99 [00:03<01:14, 1.28it/s]
Fetching HRRR data: 5%|▌ | 5/99 [00:04<01:14, 1.26it/s]
Fetching HRRR data: 6%|▌ | 6/99 [00:04<01:14, 1.25it/s]
Fetching HRRR data: 7%|▋ | 7/99 [00:05<01:13, 1.26it/s]
Fetching HRRR data: 8%|▊ | 8/99 [00:06<01:12, 1.26it/s]
Fetching HRRR data: 9%|▉ | 9/99 [00:07<01:11, 1.25it/s]
Fetching HRRR data: 10%|█ | 10/99 [00:08<01:11, 1.25it/s]
Fetching HRRR data: 11%|█ | 11/99 [00:08<01:10, 1.25it/s]
Fetching HRRR data: 12%|█▏ | 12/99 [00:09<01:10, 1.24it/s]
Fetching HRRR data: 13%|█▎ | 13/99 [00:10<01:09, 1.25it/s]
Fetching HRRR data: 14%|█▍ | 14/99 [00:11<01:08, 1.24it/s]
Fetching HRRR data: 15%|█▌ | 15/99 [00:12<01:07, 1.24it/s]
Fetching HRRR data: 16%|█▌ | 16/99 [00:12<01:06, 1.25it/s]
Fetching HRRR data: 17%|█▋ | 17/99 [00:13<01:05, 1.25it/s]
Fetching HRRR data: 18%|█▊ | 18/99 [00:14<01:04, 1.25it/s]
Fetching HRRR data: 19%|█▉ | 19/99 [00:15<01:03, 1.26it/s]
Fetching HRRR data: 20%|██ | 20/99 [00:16<01:03, 1.25it/s]
Fetching HRRR data: 21%|██ | 21/99 [00:17<01:03, 1.23it/s]
Fetching HRRR data: 22%|██▏ | 22/99 [00:17<01:02, 1.24it/s]
Fetching HRRR data: 23%|██▎ | 23/99 [00:18<01:01, 1.24it/s]
Fetching HRRR data: 24%|██▍ | 24/99 [00:19<01:00, 1.25it/s]
Fetching HRRR data: 25%|██▌ | 25/99 [00:20<00:59, 1.25it/s]
Fetching HRRR data: 26%|██▋ | 26/99 [00:21<00:58, 1.24it/s]
Fetching HRRR data: 27%|██▋ | 27/99 [00:21<00:58, 1.24it/s]
Fetching HRRR data: 28%|██▊ | 28/99 [00:22<00:57, 1.24it/s]
Fetching HRRR data: 29%|██▉ | 29/99 [00:23<00:56, 1.24it/s]
Fetching HRRR data: 30%|███ | 30/99 [00:24<00:55, 1.24it/s]
Fetching HRRR data: 31%|███▏ | 31/99 [00:25<00:54, 1.24it/s]
Fetching HRRR data: 32%|███▏ | 32/99 [00:25<00:53, 1.24it/s]
Fetching HRRR data: 33%|███▎ | 33/99 [00:26<00:52, 1.25it/s]
Fetching HRRR data: 34%|███▍ | 34/99 [00:27<00:52, 1.25it/s]
Fetching HRRR data: 35%|███▌ | 35/99 [00:28<00:52, 1.23it/s]
Fetching HRRR data: 36%|███▋ | 36/99 [00:29<00:51, 1.22it/s]
Fetching HRRR data: 37%|███▋ | 37/99 [00:29<00:51, 1.22it/s]
Fetching HRRR data: 38%|███▊ | 38/99 [00:30<00:50, 1.21it/s]
Fetching HRRR data: 39%|███▉ | 39/99 [00:31<00:50, 1.19it/s]
Fetching HRRR data: 40%|████ | 40/99 [00:32<00:49, 1.19it/s]
Fetching HRRR data: 41%|████▏ | 41/99 [00:33<00:48, 1.19it/s]
Fetching HRRR data: 42%|████▏ | 42/99 [00:34<00:47, 1.19it/s]
Fetching HRRR data: 43%|████▎ | 43/99 [00:35<00:46, 1.19it/s]
Fetching HRRR data: 44%|████▍ | 44/99 [00:35<00:45, 1.20it/s]
Fetching HRRR data: 45%|████▌ | 45/99 [00:36<00:45, 1.19it/s]
Fetching HRRR data: 46%|████▋ | 46/99 [00:37<00:45, 1.18it/s]
Fetching HRRR data: 47%|████▋ | 47/99 [00:38<00:43, 1.19it/s]
Fetching HRRR data: 48%|████▊ | 48/99 [00:39<00:42, 1.19it/s]
Fetching HRRR data: 49%|████▉ | 49/99 [00:40<00:41, 1.19it/s]
Fetching HRRR data: 51%|█████ | 50/99 [00:40<00:40, 1.20it/s]
Fetching HRRR data: 52%|█████▏ | 51/99 [00:41<00:40, 1.19it/s]
Fetching HRRR data: 53%|█████▎ | 52/99 [00:42<00:39, 1.20it/s]
Fetching HRRR data: 54%|█████▎ | 53/99 [00:43<00:39, 1.18it/s]
Fetching HRRR data: 55%|█████▍ | 54/99 [00:44<00:37, 1.19it/s]
Fetching HRRR data: 56%|█████▌ | 55/99 [00:45<00:37, 1.17it/s]
Fetching HRRR data: 57%|█████▋ | 56/99 [00:45<00:36, 1.18it/s]
Fetching HRRR data: 58%|█████▊ | 57/99 [00:46<00:35, 1.19it/s]
Fetching HRRR data: 59%|█████▊ | 58/99 [00:47<00:35, 1.16it/s]
Fetching HRRR data: 60%|█████▉ | 59/99 [00:48<00:33, 1.18it/s]
Fetching HRRR data: 61%|██████ | 60/99 [00:49<00:32, 1.19it/s]
Fetching HRRR data: 62%|██████▏ | 61/99 [00:50<00:31, 1.19it/s]
Fetching HRRR data: 63%|██████▎ | 62/99 [00:50<00:30, 1.21it/s]
Fetching HRRR data: 64%|██████▎ | 63/99 [00:51<00:29, 1.22it/s]
Fetching HRRR data: 65%|██████▍ | 64/99 [00:52<00:28, 1.22it/s]
Fetching HRRR data: 66%|██████▌ | 65/99 [00:53<00:27, 1.23it/s]
Fetching HRRR data: 67%|██████▋ | 66/99 [00:54<00:26, 1.23it/s]
Fetching HRRR data: 68%|██████▊ | 67/99 [00:55<00:25, 1.23it/s]
Fetching HRRR data: 69%|██████▊ | 68/99 [00:55<00:25, 1.21it/s]
Fetching HRRR data: 70%|██████▉ | 69/99 [00:56<00:24, 1.21it/s]
Fetching HRRR data: 71%|███████ | 70/99 [00:57<00:23, 1.21it/s]
Fetching HRRR data: 72%|███████▏ | 71/99 [00:58<00:23, 1.22it/s]
Fetching HRRR data: 73%|███████▎ | 72/99 [00:59<00:22, 1.22it/s]
Fetching HRRR data: 74%|███████▎ | 73/99 [01:00<00:21, 1.21it/s]
Fetching HRRR data: 75%|███████▍ | 74/99 [01:00<00:20, 1.21it/s]
Fetching HRRR data: 76%|███████▌ | 75/99 [01:01<00:19, 1.22it/s]
Fetching HRRR data: 77%|███████▋ | 76/99 [01:02<00:18, 1.23it/s]
Fetching HRRR data: 78%|███████▊ | 77/99 [01:03<00:17, 1.24it/s]
Fetching HRRR data: 79%|███████▉ | 78/99 [01:04<00:17, 1.23it/s]
Fetching HRRR data: 80%|███████▉ | 79/99 [01:04<00:16, 1.23it/s]
Fetching HRRR data: 81%|████████ | 80/99 [01:05<00:15, 1.24it/s]
Fetching HRRR data: 82%|████████▏ | 81/99 [01:06<00:14, 1.24it/s]
Fetching HRRR data: 83%|████████▎ | 82/99 [01:07<00:13, 1.25it/s]
Fetching HRRR data: 84%|████████▍ | 83/99 [01:08<00:12, 1.24it/s]
Fetching HRRR data: 85%|████████▍ | 84/99 [01:08<00:12, 1.25it/s]
Fetching HRRR data: 86%|████████▌ | 85/99 [01:09<00:11, 1.25it/s]
Fetching HRRR data: 87%|████████▋ | 86/99 [01:10<00:10, 1.25it/s]
Fetching HRRR data: 88%|████████▊ | 87/99 [01:11<00:09, 1.25it/s]
Fetching HRRR data: 89%|████████▉ | 88/99 [01:12<00:08, 1.24it/s]
Fetching HRRR data: 90%|████████▉ | 89/99 [01:12<00:08, 1.25it/s]
Fetching HRRR data: 91%|█████████ | 90/99 [01:13<00:07, 1.24it/s]
Fetching HRRR data: 92%|█████████▏| 91/99 [01:14<00:06, 1.24it/s]
Fetching HRRR data: 93%|█████████▎| 92/99 [01:15<00:05, 1.24it/s]
Fetching HRRR data: 94%|█████████▍| 93/99 [01:16<00:05, 1.20it/s]
Fetching HRRR data: 95%|█████████▍| 94/99 [01:17<00:04, 1.21it/s]
Fetching HRRR data: 96%|█████████▌| 95/99 [01:17<00:03, 1.22it/s]
Fetching HRRR data: 97%|█████████▋| 96/99 [01:18<00:02, 1.22it/s]
Fetching HRRR data: 98%|█████████▊| 97/99 [01:19<00:01, 1.23it/s]
Fetching HRRR data: 99%|█████████▉| 98/99 [01:20<00:00, 1.20it/s]
Fetching HRRR data: 100%|██████████| 99/99 [01:21<00:00, 1.24it/s]
Fetching HRRR data: 100%|██████████| 99/99 [01:21<00:00, 1.22it/s]
2025-03-27 02:03:16.045 | SUCCESS | earth2studio.run:deterministic:106 - Fetched data from HRRR
2025-03-27 02:03:16.047 | WARNING | earth2studio.io.zarr:add_array:192 - Datetime64 not supported in zarr 3.0, converting to int64 nanoseconds since epoch
2025-03-27 02:03:16.052 | WARNING | earth2studio.io.zarr:add_array:198 - Timedelta64 not supported in zarr 3.0, converting to int64 nanoseconds since epoch
2025-03-27 02:03:16.455 | INFO | earth2studio.run:deterministic:136 - Inference starting!
Running inference: 0%| | 0/5 [00:00<?, ?it/s]
Running inference: 20%|██ | 1/5 [00:08<00:32, 8.17s/it]
2025-03-27 02:03:24.625 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:214 - Fetching GFS index file: 2025-03-26 00:00:00 lead 0:00:00
Running inference: 20%|██ | 1/5 [00:08<00:32, 8.17s/it]
Fetching GFS for 2025-03-26 00:00:00: 0%| | 0/26 [00:00<?, ?it/s]
2025-03-27 02:03:24.635 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: u10m at 2025-03-26 00:00:00_0:00:00
Fetching GFS for 2025-03-26 00:00:00: 0%| | 0/26 [00:00<?, ?it/s]
Running inference: 20%|██ | 1/5 [00:08<00:32, 8.17s/it]
2025-03-27 02:03:24.700 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: v10m at 2025-03-26 00:00:00_0:00:00
Fetching GFS for 2025-03-26 00:00:00: 0%| | 0/26 [00:00<?, ?it/s]
Running inference: 20%|██ | 1/5 [00:08<00:32, 8.17s/it]
Fetching GFS for 2025-03-26 00:00:00: 8%|▊ | 2/26 [00:00<00:01, 19.48it/s]
2025-03-27 02:03:24.738 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: t2m at 2025-03-26 00:00:00_0:00:00
Fetching GFS for 2025-03-26 00:00:00: 8%|▊ | 2/26 [00:00<00:01, 19.48it/s]
Running inference: 20%|██ | 1/5 [00:08<00:32, 8.17s/it]
2025-03-27 02:03:24.774 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: tcwv at 2025-03-26 00:00:00_0:00:00
Fetching GFS for 2025-03-26 00:00:00: 8%|▊ | 2/26 [00:00<00:01, 19.48it/s]
Running inference: 20%|██ | 1/5 [00:08<00:32, 8.17s/it]
2025-03-27 02:03:24.811 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: msl at 2025-03-26 00:00:00_0:00:00
Fetching GFS for 2025-03-26 00:00:00: 8%|▊ | 2/26 [00:00<00:01, 19.48it/s]
Running inference: 20%|██ | 1/5 [00:08<00:32, 8.17s/it]
Fetching GFS for 2025-03-26 00:00:00: 19%|█▉ | 5/26 [00:00<00:00, 24.29it/s]
2025-03-27 02:03:24.848 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: sp at 2025-03-26 00:00:00_0:00:00
Fetching GFS for 2025-03-26 00:00:00: 19%|█▉ | 5/26 [00:00<00:00, 24.29it/s]
Running inference: 20%|██ | 1/5 [00:08<00:32, 8.17s/it]
2025-03-27 02:03:24.884 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: u1000 at 2025-03-26 00:00:00_0:00:00
Fetching GFS for 2025-03-26 00:00:00: 19%|█▉ | 5/26 [00:00<00:00, 24.29it/s]
Running inference: 20%|██ | 1/5 [00:08<00:32, 8.17s/it]
2025-03-27 02:03:24.921 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: u850 at 2025-03-26 00:00:00_0:00:00
Fetching GFS for 2025-03-26 00:00:00: 19%|█▉ | 5/26 [00:00<00:00, 24.29it/s]
Running inference: 20%|██ | 1/5 [00:08<00:32, 8.17s/it]
Fetching GFS for 2025-03-26 00:00:00: 31%|███ | 8/26 [00:00<00:00, 25.59it/s]
2025-03-27 02:03:24.958 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: u500 at 2025-03-26 00:00:00_0:00:00
Fetching GFS for 2025-03-26 00:00:00: 31%|███ | 8/26 [00:00<00:00, 25.59it/s]
Running inference: 20%|██ | 1/5 [00:08<00:32, 8.17s/it]
2025-03-27 02:03:24.996 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: u250 at 2025-03-26 00:00:00_0:00:00
Fetching GFS for 2025-03-26 00:00:00: 31%|███ | 8/26 [00:00<00:00, 25.59it/s]
Running inference: 20%|██ | 1/5 [00:08<00:32, 8.17s/it]
2025-03-27 02:03:25.033 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: v1000 at 2025-03-26 00:00:00_0:00:00
Fetching GFS for 2025-03-26 00:00:00: 31%|███ | 8/26 [00:00<00:00, 25.59it/s]
Running inference: 20%|██ | 1/5 [00:08<00:32, 8.17s/it]
Fetching GFS for 2025-03-26 00:00:00: 42%|████▏ | 11/26 [00:00<00:00, 26.14it/s]
2025-03-27 02:03:25.070 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: v850 at 2025-03-26 00:00:00_0:00:00
Fetching GFS for 2025-03-26 00:00:00: 42%|████▏ | 11/26 [00:00<00:00, 26.14it/s]
Running inference: 20%|██ | 1/5 [00:08<00:32, 8.17s/it]
2025-03-27 02:03:25.107 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: v500 at 2025-03-26 00:00:00_0:00:00
Fetching GFS for 2025-03-26 00:00:00: 42%|████▏ | 11/26 [00:00<00:00, 26.14it/s]
Running inference: 20%|██ | 1/5 [00:08<00:32, 8.17s/it]
2025-03-27 02:03:25.144 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: v250 at 2025-03-26 00:00:00_0:00:00
Fetching GFS for 2025-03-26 00:00:00: 42%|████▏ | 11/26 [00:00<00:00, 26.14it/s]
Running inference: 20%|██ | 1/5 [00:08<00:32, 8.17s/it]
Fetching GFS for 2025-03-26 00:00:00: 54%|█████▍ | 14/26 [00:00<00:00, 26.52it/s]
2025-03-27 02:03:25.180 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: z1000 at 2025-03-26 00:00:00_0:00:00
Fetching GFS for 2025-03-26 00:00:00: 54%|█████▍ | 14/26 [00:00<00:00, 26.52it/s]
Running inference: 20%|██ | 1/5 [00:08<00:32, 8.17s/it]
2025-03-27 02:03:25.217 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: z850 at 2025-03-26 00:00:00_0:00:00
Fetching GFS for 2025-03-26 00:00:00: 54%|█████▍ | 14/26 [00:00<00:00, 26.52it/s]
Running inference: 20%|██ | 1/5 [00:08<00:32, 8.17s/it]
2025-03-27 02:03:25.254 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: z500 at 2025-03-26 00:00:00_0:00:00
Fetching GFS for 2025-03-26 00:00:00: 54%|█████▍ | 14/26 [00:00<00:00, 26.52it/s]
Running inference: 20%|██ | 1/5 [00:08<00:32, 8.17s/it]
Fetching GFS for 2025-03-26 00:00:00: 65%|██████▌ | 17/26 [00:00<00:00, 26.61it/s]
2025-03-27 02:03:25.292 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: z250 at 2025-03-26 00:00:00_0:00:00
Fetching GFS for 2025-03-26 00:00:00: 65%|██████▌ | 17/26 [00:00<00:00, 26.61it/s]
Running inference: 20%|██ | 1/5 [00:08<00:32, 8.17s/it]
2025-03-27 02:03:25.330 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: t1000 at 2025-03-26 00:00:00_0:00:00
Fetching GFS for 2025-03-26 00:00:00: 65%|██████▌ | 17/26 [00:00<00:00, 26.61it/s]
Running inference: 20%|██ | 1/5 [00:08<00:32, 8.17s/it]
2025-03-27 02:03:25.368 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: t850 at 2025-03-26 00:00:00_0:00:00
Fetching GFS for 2025-03-26 00:00:00: 65%|██████▌ | 17/26 [00:00<00:00, 26.61it/s]
Running inference: 20%|██ | 1/5 [00:08<00:32, 8.17s/it]
Fetching GFS for 2025-03-26 00:00:00: 77%|███████▋ | 20/26 [00:00<00:00, 26.59it/s]
2025-03-27 02:03:25.405 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: t500 at 2025-03-26 00:00:00_0:00:00
Fetching GFS for 2025-03-26 00:00:00: 77%|███████▋ | 20/26 [00:00<00:00, 26.59it/s]
Running inference: 20%|██ | 1/5 [00:08<00:32, 8.17s/it]
2025-03-27 02:03:25.441 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: t250 at 2025-03-26 00:00:00_0:00:00
Fetching GFS for 2025-03-26 00:00:00: 77%|███████▋ | 20/26 [00:00<00:00, 26.59it/s]
Running inference: 20%|██ | 1/5 [00:08<00:32, 8.17s/it]
2025-03-27 02:03:25.478 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: q1000 at 2025-03-26 00:00:00_0:00:00
Fetching GFS for 2025-03-26 00:00:00: 77%|███████▋ | 20/26 [00:00<00:00, 26.59it/s]
Running inference: 20%|██ | 1/5 [00:09<00:32, 8.17s/it]
Fetching GFS for 2025-03-26 00:00:00: 88%|████████▊ | 23/26 [00:00<00:00, 26.80it/s]
2025-03-27 02:03:25.515 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: q850 at 2025-03-26 00:00:00_0:00:00
Fetching GFS for 2025-03-26 00:00:00: 88%|████████▊ | 23/26 [00:00<00:00, 26.80it/s]
Running inference: 20%|██ | 1/5 [00:09<00:32, 8.17s/it]
2025-03-27 02:03:25.553 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: q500 at 2025-03-26 00:00:00_0:00:00
Fetching GFS for 2025-03-26 00:00:00: 88%|████████▊ | 23/26 [00:00<00:00, 26.80it/s]
Running inference: 20%|██ | 1/5 [00:09<00:32, 8.17s/it]
2025-03-27 02:03:25.593 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: q250 at 2025-03-26 00:00:00_0:00:00
Fetching GFS for 2025-03-26 00:00:00: 88%|████████▊ | 23/26 [00:00<00:00, 26.80it/s]
Running inference: 20%|██ | 1/5 [00:09<00:32, 8.17s/it]
Fetching GFS for 2025-03-26 00:00:00: 100%|██████████| 26/26 [00:00<00:00, 26.58it/s]
Fetching GFS for 2025-03-26 00:00:00: 100%|██████████| 26/26 [00:00<00:00, 26.14it/s]
Running inference: 40%|████ | 2/5 [00:29<00:47, 15.67s/it]
2025-03-27 02:03:45.554 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:214 - Fetching GFS index file: 2025-03-26 00:00:00 lead 1:00:00
Running inference: 40%|████ | 2/5 [00:29<00:47, 15.67s/it]
Fetching GFS for 2025-03-26 00:00:00: 0%| | 0/26 [00:00<?, ?it/s]
2025-03-27 02:03:45.564 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: u10m at 2025-03-26 00:00:00_1:00:00
Fetching GFS for 2025-03-26 00:00:00: 0%| | 0/26 [00:00<?, ?it/s]
Running inference: 40%|████ | 2/5 [00:29<00:47, 15.67s/it]
2025-03-27 02:03:45.630 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: v10m at 2025-03-26 00:00:00_1:00:00
Fetching GFS for 2025-03-26 00:00:00: 0%| | 0/26 [00:00<?, ?it/s]
Running inference: 40%|████ | 2/5 [00:29<00:47, 15.67s/it]
Fetching GFS for 2025-03-26 00:00:00: 8%|▊ | 2/26 [00:00<00:01, 19.37it/s]
2025-03-27 02:03:45.668 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: t2m at 2025-03-26 00:00:00_1:00:00
Fetching GFS for 2025-03-26 00:00:00: 8%|▊ | 2/26 [00:00<00:01, 19.37it/s]
Running inference: 40%|████ | 2/5 [00:29<00:47, 15.67s/it]
2025-03-27 02:03:45.703 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: tcwv at 2025-03-26 00:00:00_1:00:00
Fetching GFS for 2025-03-26 00:00:00: 8%|▊ | 2/26 [00:00<00:01, 19.37it/s]
Running inference: 40%|████ | 2/5 [00:29<00:47, 15.67s/it]
2025-03-27 02:03:45.740 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: msl at 2025-03-26 00:00:00_1:00:00
Fetching GFS for 2025-03-26 00:00:00: 8%|▊ | 2/26 [00:00<00:01, 19.37it/s]
Running inference: 40%|████ | 2/5 [00:29<00:47, 15.67s/it]
Fetching GFS for 2025-03-26 00:00:00: 19%|█▉ | 5/26 [00:00<00:00, 22.29it/s]
2025-03-27 02:03:45.793 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: sp at 2025-03-26 00:00:00_1:00:00
Fetching GFS for 2025-03-26 00:00:00: 19%|█▉ | 5/26 [00:00<00:00, 22.29it/s]
Running inference: 40%|████ | 2/5 [00:29<00:47, 15.67s/it]
2025-03-27 02:03:45.829 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: u1000 at 2025-03-26 00:00:00_1:00:00
Fetching GFS for 2025-03-26 00:00:00: 19%|█▉ | 5/26 [00:00<00:00, 22.29it/s]
Running inference: 40%|████ | 2/5 [00:29<00:47, 15.67s/it]
2025-03-27 02:03:45.866 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: u850 at 2025-03-26 00:00:00_1:00:00
Fetching GFS for 2025-03-26 00:00:00: 19%|█▉ | 5/26 [00:00<00:00, 22.29it/s]
Running inference: 40%|████ | 2/5 [00:29<00:47, 15.67s/it]
Fetching GFS for 2025-03-26 00:00:00: 31%|███ | 8/26 [00:00<00:00, 24.48it/s]
2025-03-27 02:03:45.903 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: u500 at 2025-03-26 00:00:00_1:00:00
Fetching GFS for 2025-03-26 00:00:00: 31%|███ | 8/26 [00:00<00:00, 24.48it/s]
Running inference: 40%|████ | 2/5 [00:29<00:47, 15.67s/it]
2025-03-27 02:03:45.940 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: u250 at 2025-03-26 00:00:00_1:00:00
Fetching GFS for 2025-03-26 00:00:00: 31%|███ | 8/26 [00:00<00:00, 24.48it/s]
Running inference: 40%|████ | 2/5 [00:29<00:47, 15.67s/it]
2025-03-27 02:03:45.977 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: v1000 at 2025-03-26 00:00:00_1:00:00
Fetching GFS for 2025-03-26 00:00:00: 31%|███ | 8/26 [00:00<00:00, 24.48it/s]
Running inference: 40%|████ | 2/5 [00:29<00:47, 15.67s/it]
Fetching GFS for 2025-03-26 00:00:00: 42%|████▏ | 11/26 [00:00<00:00, 25.52it/s]
2025-03-27 02:03:46.014 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: v850 at 2025-03-26 00:00:00_1:00:00
Fetching GFS for 2025-03-26 00:00:00: 42%|████▏ | 11/26 [00:00<00:00, 25.52it/s]
Running inference: 40%|████ | 2/5 [00:29<00:47, 15.67s/it]
2025-03-27 02:03:46.050 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: v500 at 2025-03-26 00:00:00_1:00:00
Fetching GFS for 2025-03-26 00:00:00: 42%|████▏ | 11/26 [00:00<00:00, 25.52it/s]
Running inference: 40%|████ | 2/5 [00:29<00:47, 15.67s/it]
2025-03-27 02:03:46.087 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: v250 at 2025-03-26 00:00:00_1:00:00
Fetching GFS for 2025-03-26 00:00:00: 42%|████▏ | 11/26 [00:00<00:00, 25.52it/s]
Running inference: 40%|████ | 2/5 [00:29<00:47, 15.67s/it]
Fetching GFS for 2025-03-26 00:00:00: 54%|█████▍ | 14/26 [00:00<00:00, 26.13it/s]
2025-03-27 02:03:46.124 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: z1000 at 2025-03-26 00:00:00_1:00:00
Fetching GFS for 2025-03-26 00:00:00: 54%|█████▍ | 14/26 [00:00<00:00, 26.13it/s]
Running inference: 40%|████ | 2/5 [00:29<00:47, 15.67s/it]
2025-03-27 02:03:46.161 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: z850 at 2025-03-26 00:00:00_1:00:00
Fetching GFS for 2025-03-26 00:00:00: 54%|█████▍ | 14/26 [00:00<00:00, 26.13it/s]
Running inference: 40%|████ | 2/5 [00:29<00:47, 15.67s/it]
2025-03-27 02:03:46.199 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: z500 at 2025-03-26 00:00:00_1:00:00
Fetching GFS for 2025-03-26 00:00:00: 54%|█████▍ | 14/26 [00:00<00:00, 26.13it/s]
Running inference: 40%|████ | 2/5 [00:29<00:47, 15.67s/it]
Fetching GFS for 2025-03-26 00:00:00: 65%|██████▌ | 17/26 [00:00<00:00, 26.27it/s]
2025-03-27 02:03:46.237 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: z250 at 2025-03-26 00:00:00_1:00:00
Fetching GFS for 2025-03-26 00:00:00: 65%|██████▌ | 17/26 [00:00<00:00, 26.27it/s]
Running inference: 40%|████ | 2/5 [00:29<00:47, 15.67s/it]
2025-03-27 02:03:46.275 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: t1000 at 2025-03-26 00:00:00_1:00:00
Fetching GFS for 2025-03-26 00:00:00: 65%|██████▌ | 17/26 [00:00<00:00, 26.27it/s]
Running inference: 40%|████ | 2/5 [00:29<00:47, 15.67s/it]
2025-03-27 02:03:46.312 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: t850 at 2025-03-26 00:00:00_1:00:00
Fetching GFS for 2025-03-26 00:00:00: 65%|██████▌ | 17/26 [00:00<00:00, 26.27it/s]
Running inference: 40%|████ | 2/5 [00:29<00:47, 15.67s/it]
Fetching GFS for 2025-03-26 00:00:00: 77%|███████▋ | 20/26 [00:00<00:00, 26.46it/s]
2025-03-27 02:03:46.349 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: t500 at 2025-03-26 00:00:00_1:00:00
Fetching GFS for 2025-03-26 00:00:00: 77%|███████▋ | 20/26 [00:00<00:00, 26.46it/s]
Running inference: 40%|████ | 2/5 [00:29<00:47, 15.67s/it]
2025-03-27 02:03:46.385 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: t250 at 2025-03-26 00:00:00_1:00:00
Fetching GFS for 2025-03-26 00:00:00: 77%|███████▋ | 20/26 [00:00<00:00, 26.46it/s]
Running inference: 40%|████ | 2/5 [00:29<00:47, 15.67s/it]
2025-03-27 02:03:46.422 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: q1000 at 2025-03-26 00:00:00_1:00:00
Fetching GFS for 2025-03-26 00:00:00: 77%|███████▋ | 20/26 [00:00<00:00, 26.46it/s]
Running inference: 40%|████ | 2/5 [00:29<00:47, 15.67s/it]
Fetching GFS for 2025-03-26 00:00:00: 88%|████████▊ | 23/26 [00:00<00:00, 26.65it/s]
2025-03-27 02:03:46.459 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: q850 at 2025-03-26 00:00:00_1:00:00
Fetching GFS for 2025-03-26 00:00:00: 88%|████████▊ | 23/26 [00:00<00:00, 26.65it/s]
Running inference: 40%|████ | 2/5 [00:30<00:47, 15.67s/it]
2025-03-27 02:03:46.497 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: q500 at 2025-03-26 00:00:00_1:00:00
Fetching GFS for 2025-03-26 00:00:00: 88%|████████▊ | 23/26 [00:00<00:00, 26.65it/s]
Running inference: 40%|████ | 2/5 [00:30<00:47, 15.67s/it]
2025-03-27 02:03:46.536 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: q250 at 2025-03-26 00:00:00_1:00:00
Fetching GFS for 2025-03-26 00:00:00: 88%|████████▊ | 23/26 [00:00<00:00, 26.65it/s]
Running inference: 40%|████ | 2/5 [00:30<00:47, 15.67s/it]
Fetching GFS for 2025-03-26 00:00:00: 100%|██████████| 26/26 [00:01<00:00, 26.59it/s]
Fetching GFS for 2025-03-26 00:00:00: 100%|██████████| 26/26 [00:01<00:00, 25.78it/s]
Running inference: 60%|██████ | 3/5 [00:50<00:36, 18.37s/it]
2025-03-27 02:04:07.126 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:214 - Fetching GFS index file: 2025-03-26 00:00:00 lead 2:00:00
Running inference: 60%|██████ | 3/5 [00:50<00:36, 18.37s/it]
Fetching GFS for 2025-03-26 00:00:00: 0%| | 0/26 [00:00<?, ?it/s]
2025-03-27 02:04:07.136 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: u10m at 2025-03-26 00:00:00_2:00:00
Fetching GFS for 2025-03-26 00:00:00: 0%| | 0/26 [00:00<?, ?it/s]
Running inference: 60%|██████ | 3/5 [00:50<00:36, 18.37s/it]
2025-03-27 02:04:07.203 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: v10m at 2025-03-26 00:00:00_2:00:00
Fetching GFS for 2025-03-26 00:00:00: 0%| | 0/26 [00:00<?, ?it/s]
Running inference: 60%|██████ | 3/5 [00:50<00:36, 18.37s/it]
Fetching GFS for 2025-03-26 00:00:00: 8%|▊ | 2/26 [00:00<00:01, 19.26it/s]
2025-03-27 02:04:07.240 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: t2m at 2025-03-26 00:00:00_2:00:00
Fetching GFS for 2025-03-26 00:00:00: 8%|▊ | 2/26 [00:00<00:01, 19.26it/s]
Running inference: 60%|██████ | 3/5 [00:50<00:36, 18.37s/it]
2025-03-27 02:04:07.276 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: tcwv at 2025-03-26 00:00:00_2:00:00
Fetching GFS for 2025-03-26 00:00:00: 8%|▊ | 2/26 [00:00<00:01, 19.26it/s]
Running inference: 60%|██████ | 3/5 [00:50<00:36, 18.37s/it]
2025-03-27 02:04:07.313 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: msl at 2025-03-26 00:00:00_2:00:00
Fetching GFS for 2025-03-26 00:00:00: 8%|▊ | 2/26 [00:00<00:01, 19.26it/s]
Running inference: 60%|██████ | 3/5 [00:50<00:36, 18.37s/it]
Fetching GFS for 2025-03-26 00:00:00: 19%|█▉ | 5/26 [00:00<00:00, 24.02it/s]
2025-03-27 02:04:07.350 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: sp at 2025-03-26 00:00:00_2:00:00
Fetching GFS for 2025-03-26 00:00:00: 19%|█▉ | 5/26 [00:00<00:00, 24.02it/s]
Running inference: 60%|██████ | 3/5 [00:50<00:36, 18.37s/it]
2025-03-27 02:04:07.387 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: u1000 at 2025-03-26 00:00:00_2:00:00
Fetching GFS for 2025-03-26 00:00:00: 19%|█▉ | 5/26 [00:00<00:00, 24.02it/s]
Running inference: 60%|██████ | 3/5 [00:50<00:36, 18.37s/it]
2025-03-27 02:04:07.423 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: u850 at 2025-03-26 00:00:00_2:00:00
Fetching GFS for 2025-03-26 00:00:00: 19%|█▉ | 5/26 [00:00<00:00, 24.02it/s]
Running inference: 60%|██████ | 3/5 [00:50<00:36, 18.37s/it]
Fetching GFS for 2025-03-26 00:00:00: 31%|███ | 8/26 [00:00<00:00, 25.53it/s]
2025-03-27 02:04:07.460 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: u500 at 2025-03-26 00:00:00_2:00:00
Fetching GFS for 2025-03-26 00:00:00: 31%|███ | 8/26 [00:00<00:00, 25.53it/s]
Running inference: 60%|██████ | 3/5 [00:51<00:36, 18.37s/it]
2025-03-27 02:04:07.496 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: u250 at 2025-03-26 00:00:00_2:00:00
Fetching GFS for 2025-03-26 00:00:00: 31%|███ | 8/26 [00:00<00:00, 25.53it/s]
Running inference: 60%|██████ | 3/5 [00:51<00:36, 18.37s/it]
2025-03-27 02:04:07.532 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: v1000 at 2025-03-26 00:00:00_2:00:00
Fetching GFS for 2025-03-26 00:00:00: 31%|███ | 8/26 [00:00<00:00, 25.53it/s]
Running inference: 60%|██████ | 3/5 [00:51<00:36, 18.37s/it]
Fetching GFS for 2025-03-26 00:00:00: 42%|████▏ | 11/26 [00:00<00:00, 26.14it/s]
2025-03-27 02:04:07.571 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: v850 at 2025-03-26 00:00:00_2:00:00
Fetching GFS for 2025-03-26 00:00:00: 42%|████▏ | 11/26 [00:00<00:00, 26.14it/s]
Running inference: 60%|██████ | 3/5 [00:51<00:36, 18.37s/it]
2025-03-27 02:04:07.610 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: v500 at 2025-03-26 00:00:00_2:00:00
Fetching GFS for 2025-03-26 00:00:00: 42%|████▏ | 11/26 [00:00<00:00, 26.14it/s]
Running inference: 60%|██████ | 3/5 [00:51<00:36, 18.37s/it]
2025-03-27 02:04:07.646 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: v250 at 2025-03-26 00:00:00_2:00:00
Fetching GFS for 2025-03-26 00:00:00: 42%|████▏ | 11/26 [00:00<00:00, 26.14it/s]
Running inference: 60%|██████ | 3/5 [00:51<00:36, 18.37s/it]
Fetching GFS for 2025-03-26 00:00:00: 54%|█████▍ | 14/26 [00:00<00:00, 26.48it/s]
2025-03-27 02:04:07.682 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: z1000 at 2025-03-26 00:00:00_2:00:00
Fetching GFS for 2025-03-26 00:00:00: 54%|█████▍ | 14/26 [00:00<00:00, 26.48it/s]
Running inference: 60%|██████ | 3/5 [00:51<00:36, 18.37s/it]
2025-03-27 02:04:07.719 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: z850 at 2025-03-26 00:00:00_2:00:00
Fetching GFS for 2025-03-26 00:00:00: 54%|█████▍ | 14/26 [00:00<00:00, 26.48it/s]
Running inference: 60%|██████ | 3/5 [00:51<00:36, 18.37s/it]
2025-03-27 02:04:07.757 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: z500 at 2025-03-26 00:00:00_2:00:00
Fetching GFS for 2025-03-26 00:00:00: 54%|█████▍ | 14/26 [00:00<00:00, 26.48it/s]
Running inference: 60%|██████ | 3/5 [00:51<00:36, 18.37s/it]
Fetching GFS for 2025-03-26 00:00:00: 65%|██████▌ | 17/26 [00:00<00:00, 26.56it/s]
2025-03-27 02:04:07.794 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: z250 at 2025-03-26 00:00:00_2:00:00
Fetching GFS for 2025-03-26 00:00:00: 65%|██████▌ | 17/26 [00:00<00:00, 26.56it/s]
Running inference: 60%|██████ | 3/5 [00:51<00:36, 18.37s/it]
2025-03-27 02:04:07.831 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: t1000 at 2025-03-26 00:00:00_2:00:00
Fetching GFS for 2025-03-26 00:00:00: 65%|██████▌ | 17/26 [00:00<00:00, 26.56it/s]
Running inference: 60%|██████ | 3/5 [00:51<00:36, 18.37s/it]
2025-03-27 02:04:07.869 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: t850 at 2025-03-26 00:00:00_2:00:00
Fetching GFS for 2025-03-26 00:00:00: 65%|██████▌ | 17/26 [00:00<00:00, 26.56it/s]
Running inference: 60%|██████ | 3/5 [00:51<00:36, 18.37s/it]
Fetching GFS for 2025-03-26 00:00:00: 77%|███████▋ | 20/26 [00:00<00:00, 26.60it/s]
2025-03-27 02:04:07.907 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: t500 at 2025-03-26 00:00:00_2:00:00
Fetching GFS for 2025-03-26 00:00:00: 77%|███████▋ | 20/26 [00:00<00:00, 26.60it/s]
Running inference: 60%|██████ | 3/5 [00:51<00:36, 18.37s/it]
2025-03-27 02:04:07.945 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: t250 at 2025-03-26 00:00:00_2:00:00
Fetching GFS for 2025-03-26 00:00:00: 77%|███████▋ | 20/26 [00:00<00:00, 26.60it/s]
Running inference: 60%|██████ | 3/5 [00:51<00:36, 18.37s/it]
2025-03-27 02:04:07.981 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: q1000 at 2025-03-26 00:00:00_2:00:00
Fetching GFS for 2025-03-26 00:00:00: 77%|███████▋ | 20/26 [00:00<00:00, 26.60it/s]
Running inference: 60%|██████ | 3/5 [00:51<00:36, 18.37s/it]
Fetching GFS for 2025-03-26 00:00:00: 88%|████████▊ | 23/26 [00:00<00:00, 26.58it/s]
2025-03-27 02:04:08.020 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: q850 at 2025-03-26 00:00:00_2:00:00
Fetching GFS for 2025-03-26 00:00:00: 88%|████████▊ | 23/26 [00:00<00:00, 26.58it/s]
Running inference: 60%|██████ | 3/5 [00:51<00:36, 18.37s/it]
2025-03-27 02:04:08.058 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: q500 at 2025-03-26 00:00:00_2:00:00
Fetching GFS for 2025-03-26 00:00:00: 88%|████████▊ | 23/26 [00:00<00:00, 26.58it/s]
Running inference: 60%|██████ | 3/5 [00:51<00:36, 18.37s/it]
2025-03-27 02:04:08.098 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: q250 at 2025-03-26 00:00:00_2:00:00
Fetching GFS for 2025-03-26 00:00:00: 88%|████████▊ | 23/26 [00:00<00:00, 26.58it/s]
Running inference: 60%|██████ | 3/5 [00:51<00:36, 18.37s/it]
Fetching GFS for 2025-03-26 00:00:00: 100%|██████████| 26/26 [00:01<00:00, 26.33it/s]
Fetching GFS for 2025-03-26 00:00:00: 100%|██████████| 26/26 [00:01<00:00, 25.99it/s]
Running inference: 80%|████████ | 4/5 [01:12<00:19, 19.68s/it]
2025-03-27 02:04:28.818 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:214 - Fetching GFS index file: 2025-03-26 00:00:00 lead 3:00:00
Running inference: 80%|████████ | 4/5 [01:12<00:19, 19.68s/it]
Fetching GFS for 2025-03-26 00:00:00: 0%| | 0/26 [00:00<?, ?it/s]
2025-03-27 02:04:28.828 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: u10m at 2025-03-26 00:00:00_3:00:00
Fetching GFS for 2025-03-26 00:00:00: 0%| | 0/26 [00:00<?, ?it/s]
Running inference: 80%|████████ | 4/5 [01:12<00:19, 19.68s/it]
2025-03-27 02:04:28.894 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: v10m at 2025-03-26 00:00:00_3:00:00
Fetching GFS for 2025-03-26 00:00:00: 0%| | 0/26 [00:00<?, ?it/s]
Running inference: 80%|████████ | 4/5 [01:12<00:19, 19.68s/it]
Fetching GFS for 2025-03-26 00:00:00: 8%|▊ | 2/26 [00:00<00:01, 19.33it/s]
2025-03-27 02:04:28.932 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: t2m at 2025-03-26 00:00:00_3:00:00
Fetching GFS for 2025-03-26 00:00:00: 8%|▊ | 2/26 [00:00<00:01, 19.33it/s]
Running inference: 80%|████████ | 4/5 [01:12<00:19, 19.68s/it]
2025-03-27 02:04:28.967 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: tcwv at 2025-03-26 00:00:00_3:00:00
Fetching GFS for 2025-03-26 00:00:00: 8%|▊ | 2/26 [00:00<00:01, 19.33it/s]
Running inference: 80%|████████ | 4/5 [01:12<00:19, 19.68s/it]
2025-03-27 02:04:29.007 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: msl at 2025-03-26 00:00:00_3:00:00
Fetching GFS for 2025-03-26 00:00:00: 8%|▊ | 2/26 [00:00<00:01, 19.33it/s]
Running inference: 80%|████████ | 4/5 [01:12<00:19, 19.68s/it]
Fetching GFS for 2025-03-26 00:00:00: 19%|█▉ | 5/26 [00:00<00:00, 23.86it/s]
2025-03-27 02:04:29.044 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: sp at 2025-03-26 00:00:00_3:00:00
Fetching GFS for 2025-03-26 00:00:00: 19%|█▉ | 5/26 [00:00<00:00, 23.86it/s]
Running inference: 80%|████████ | 4/5 [01:12<00:19, 19.68s/it]
2025-03-27 02:04:29.080 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: u1000 at 2025-03-26 00:00:00_3:00:00
Fetching GFS for 2025-03-26 00:00:00: 19%|█▉ | 5/26 [00:00<00:00, 23.86it/s]
Running inference: 80%|████████ | 4/5 [01:12<00:19, 19.68s/it]
2025-03-27 02:04:29.116 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: u850 at 2025-03-26 00:00:00_3:00:00
Fetching GFS for 2025-03-26 00:00:00: 19%|█▉ | 5/26 [00:00<00:00, 23.86it/s]
Running inference: 80%|████████ | 4/5 [01:12<00:19, 19.68s/it]
Fetching GFS for 2025-03-26 00:00:00: 31%|███ | 8/26 [00:00<00:00, 25.44it/s]
2025-03-27 02:04:29.154 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: u500 at 2025-03-26 00:00:00_3:00:00
Fetching GFS for 2025-03-26 00:00:00: 31%|███ | 8/26 [00:00<00:00, 25.44it/s]
Running inference: 80%|████████ | 4/5 [01:12<00:19, 19.68s/it]
2025-03-27 02:04:29.191 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: u250 at 2025-03-26 00:00:00_3:00:00
Fetching GFS for 2025-03-26 00:00:00: 31%|███ | 8/26 [00:00<00:00, 25.44it/s]
Running inference: 80%|████████ | 4/5 [01:12<00:19, 19.68s/it]
2025-03-27 02:04:29.228 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: v1000 at 2025-03-26 00:00:00_3:00:00
Fetching GFS for 2025-03-26 00:00:00: 31%|███ | 8/26 [00:00<00:00, 25.44it/s]
Running inference: 80%|████████ | 4/5 [01:12<00:19, 19.68s/it]
Fetching GFS for 2025-03-26 00:00:00: 42%|████▏ | 11/26 [00:00<00:00, 25.99it/s]
2025-03-27 02:04:29.265 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: v850 at 2025-03-26 00:00:00_3:00:00
Fetching GFS for 2025-03-26 00:00:00: 42%|████▏ | 11/26 [00:00<00:00, 25.99it/s]
Running inference: 80%|████████ | 4/5 [01:12<00:19, 19.68s/it]
2025-03-27 02:04:29.302 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: v500 at 2025-03-26 00:00:00_3:00:00
Fetching GFS for 2025-03-26 00:00:00: 42%|████▏ | 11/26 [00:00<00:00, 25.99it/s]
Running inference: 80%|████████ | 4/5 [01:12<00:19, 19.68s/it]
2025-03-27 02:04:29.338 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: v250 at 2025-03-26 00:00:00_3:00:00
Fetching GFS for 2025-03-26 00:00:00: 42%|████▏ | 11/26 [00:00<00:00, 25.99it/s]
Running inference: 80%|████████ | 4/5 [01:12<00:19, 19.68s/it]
Fetching GFS for 2025-03-26 00:00:00: 54%|█████▍ | 14/26 [00:00<00:00, 26.52it/s]
2025-03-27 02:04:29.375 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: z1000 at 2025-03-26 00:00:00_3:00:00
Fetching GFS for 2025-03-26 00:00:00: 54%|█████▍ | 14/26 [00:00<00:00, 26.52it/s]
Running inference: 80%|████████ | 4/5 [01:12<00:19, 19.68s/it]
2025-03-27 02:04:29.412 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: z850 at 2025-03-26 00:00:00_3:00:00
Fetching GFS for 2025-03-26 00:00:00: 54%|█████▍ | 14/26 [00:00<00:00, 26.52it/s]
Running inference: 80%|████████ | 4/5 [01:12<00:19, 19.68s/it]
2025-03-27 02:04:29.450 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: z500 at 2025-03-26 00:00:00_3:00:00
Fetching GFS for 2025-03-26 00:00:00: 54%|█████▍ | 14/26 [00:00<00:00, 26.52it/s]
Running inference: 80%|████████ | 4/5 [01:12<00:19, 19.68s/it]
Fetching GFS for 2025-03-26 00:00:00: 65%|██████▌ | 17/26 [00:00<00:00, 26.57it/s]
2025-03-27 02:04:29.487 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: z250 at 2025-03-26 00:00:00_3:00:00
Fetching GFS for 2025-03-26 00:00:00: 65%|██████▌ | 17/26 [00:00<00:00, 26.57it/s]
Running inference: 80%|████████ | 4/5 [01:13<00:19, 19.68s/it]
2025-03-27 02:04:29.524 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: t1000 at 2025-03-26 00:00:00_3:00:00
Fetching GFS for 2025-03-26 00:00:00: 65%|██████▌ | 17/26 [00:00<00:00, 26.57it/s]
Running inference: 80%|████████ | 4/5 [01:13<00:19, 19.68s/it]
2025-03-27 02:04:29.561 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: t850 at 2025-03-26 00:00:00_3:00:00
Fetching GFS for 2025-03-26 00:00:00: 65%|██████▌ | 17/26 [00:00<00:00, 26.57it/s]
Running inference: 80%|████████ | 4/5 [01:13<00:19, 19.68s/it]
Fetching GFS for 2025-03-26 00:00:00: 77%|███████▋ | 20/26 [00:00<00:00, 26.77it/s]
2025-03-27 02:04:29.597 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: t500 at 2025-03-26 00:00:00_3:00:00
Fetching GFS for 2025-03-26 00:00:00: 77%|███████▋ | 20/26 [00:00<00:00, 26.77it/s]
Running inference: 80%|████████ | 4/5 [01:13<00:19, 19.68s/it]
2025-03-27 02:04:29.634 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: t250 at 2025-03-26 00:00:00_3:00:00
Fetching GFS for 2025-03-26 00:00:00: 77%|███████▋ | 20/26 [00:00<00:00, 26.77it/s]
Running inference: 80%|████████ | 4/5 [01:13<00:19, 19.68s/it]
2025-03-27 02:04:29.670 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: q1000 at 2025-03-26 00:00:00_3:00:00
Fetching GFS for 2025-03-26 00:00:00: 77%|███████▋ | 20/26 [00:00<00:00, 26.77it/s]
Running inference: 80%|████████ | 4/5 [01:13<00:19, 19.68s/it]
Fetching GFS for 2025-03-26 00:00:00: 88%|████████▊ | 23/26 [00:00<00:00, 26.79it/s]
2025-03-27 02:04:29.709 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: q850 at 2025-03-26 00:00:00_3:00:00
Fetching GFS for 2025-03-26 00:00:00: 88%|████████▊ | 23/26 [00:00<00:00, 26.79it/s]
Running inference: 80%|████████ | 4/5 [01:13<00:19, 19.68s/it]
2025-03-27 02:04:29.747 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: q500 at 2025-03-26 00:00:00_3:00:00
Fetching GFS for 2025-03-26 00:00:00: 88%|████████▊ | 23/26 [00:00<00:00, 26.79it/s]
Running inference: 80%|████████ | 4/5 [01:13<00:19, 19.68s/it]
2025-03-27 02:04:29.784 | DEBUG | earth2studio.data.gfs:_fetch_gfs_dataarray:260 - Fetching GFS grib file for variable: q250 at 2025-03-26 00:00:00_3:00:00
Fetching GFS for 2025-03-26 00:00:00: 88%|████████▊ | 23/26 [00:00<00:00, 26.79it/s]
Running inference: 80%|████████ | 4/5 [01:13<00:19, 19.68s/it]
Fetching GFS for 2025-03-26 00:00:00: 100%|██████████| 26/26 [00:00<00:00, 26.81it/s]
Fetching GFS for 2025-03-26 00:00:00: 100%|██████████| 26/26 [00:00<00:00, 26.18it/s]
Running inference: 100%|██████████| 5/5 [01:34<00:00, 20.45s/it]
Running inference: 100%|██████████| 5/5 [01:34<00:00, 18.83s/it]
2025-03-27 02:04:50.623 | SUCCESS | earth2studio.run:deterministic:146 - Inference complete
/
├── Z10hl (1, 5, 512, 640) float32
├── Z11hl (1, 5, 512, 640) float32
├── Z13hl (1, 5, 512, 640) float32
├── Z15hl (1, 5, 512, 640) float32
├── Z1hl (1, 5, 512, 640) float32
├── Z20hl (1, 5, 512, 640) float32
├── Z25hl (1, 5, 512, 640) float32
├── Z2hl (1, 5, 512, 640) float32
├── Z30hl (1, 5, 512, 640) float32
├── Z3hl (1, 5, 512, 640) float32
├── Z4hl (1, 5, 512, 640) float32
├── Z5hl (1, 5, 512, 640) float32
├── Z6hl (1, 5, 512, 640) float32
├── Z7hl (1, 5, 512, 640) float32
├── Z8hl (1, 5, 512, 640) float32
├── Z9hl (1, 5, 512, 640) float32
├── ilat (512,) int64
├── ilon (640,) int64
├── lat (512, 640) float32
├── lead_time (5,) int64
├── lon (512, 640) float32
├── mslp (1, 5, 512, 640) float32
├── p10hl (1, 5, 512, 640) float32
├── p11hl (1, 5, 512, 640) float32
├── p13hl (1, 5, 512, 640) float32
├── p15hl (1, 5, 512, 640) float32
├── p1hl (1, 5, 512, 640) float32
├── p20hl (1, 5, 512, 640) float32
├── p2hl (1, 5, 512, 640) float32
├── p3hl (1, 5, 512, 640) float32
├── p4hl (1, 5, 512, 640) float32
├── p5hl (1, 5, 512, 640) float32
├── p6hl (1, 5, 512, 640) float32
├── p7hl (1, 5, 512, 640) float32
├── p8hl (1, 5, 512, 640) float32
├── p9hl (1, 5, 512, 640) float32
├── q10hl (1, 5, 512, 640) float32
├── q11hl (1, 5, 512, 640) float32
├── q13hl (1, 5, 512, 640) float32
├── q15hl (1, 5, 512, 640) float32
├── q1hl (1, 5, 512, 640) float32
├── q20hl (1, 5, 512, 640) float32
├── q25hl (1, 5, 512, 640) float32
├── q2hl (1, 5, 512, 640) float32
├── q30hl (1, 5, 512, 640) float32
├── q3hl (1, 5, 512, 640) float32
├── q4hl (1, 5, 512, 640) float32
├── q5hl (1, 5, 512, 640) float32
├── q6hl (1, 5, 512, 640) float32
├── q7hl (1, 5, 512, 640) float32
├── q8hl (1, 5, 512, 640) float32
├── q9hl (1, 5, 512, 640) float32
├── refc (1, 5, 512, 640) float32
├── t10hl (1, 5, 512, 640) float32
├── t11hl (1, 5, 512, 640) float32
├── t13hl (1, 5, 512, 640) float32
├── t15hl (1, 5, 512, 640) float32
├── t1hl (1, 5, 512, 640) float32
├── t20hl (1, 5, 512, 640) float32
├── t25hl (1, 5, 512, 640) float32
├── t2hl (1, 5, 512, 640) float32
├── t2m (1, 5, 512, 640) float32
├── t30hl (1, 5, 512, 640) float32
├── t3hl (1, 5, 512, 640) float32
├── t4hl (1, 5, 512, 640) float32
├── t5hl (1, 5, 512, 640) float32
├── t6hl (1, 5, 512, 640) float32
├── t7hl (1, 5, 512, 640) float32
├── t8hl (1, 5, 512, 640) float32
├── t9hl (1, 5, 512, 640) float32
├── time (1,) int64
├── u10hl (1, 5, 512, 640) float32
├── u10m (1, 5, 512, 640) float32
├── u11hl (1, 5, 512, 640) float32
├── u13hl (1, 5, 512, 640) float32
├── u15hl (1, 5, 512, 640) float32
├── u1hl (1, 5, 512, 640) float32
├── u20hl (1, 5, 512, 640) float32
├── u25hl (1, 5, 512, 640) float32
├── u2hl (1, 5, 512, 640) float32
├── u30hl (1, 5, 512, 640) float32
├── u3hl (1, 5, 512, 640) float32
├── u4hl (1, 5, 512, 640) float32
├── u5hl (1, 5, 512, 640) float32
├── u6hl (1, 5, 512, 640) float32
├── u7hl (1, 5, 512, 640) float32
├── u8hl (1, 5, 512, 640) float32
├── u9hl (1, 5, 512, 640) float32
├── v10hl (1, 5, 512, 640) float32
├── v10m (1, 5, 512, 640) float32
├── v11hl (1, 5, 512, 640) float32
├── v13hl (1, 5, 512, 640) float32
├── v15hl (1, 5, 512, 640) float32
├── v1hl (1, 5, 512, 640) float32
├── v20hl (1, 5, 512, 640) float32
├── v25hl (1, 5, 512, 640) float32
├── v2hl (1, 5, 512, 640) float32
├── v30hl (1, 5, 512, 640) float32
├── v3hl (1, 5, 512, 640) float32
├── v4hl (1, 5, 512, 640) float32
├── v5hl (1, 5, 512, 640) float32
├── v6hl (1, 5, 512, 640) float32
├── v7hl (1, 5, 512, 640) float32
├── v8hl (1, 5, 512, 640) float32
└── v9hl (1, 5, 512, 640) float32
Post Processing#
The last step is to post process our results. Cartopy is a great library for plotting fields on projections of a sphere. Here we will just plot the temperature at 2 meters (t2m) 4 hours into the forecast.
Notice that the Zarr IO function has additional APIs to interact with the stored data.
import cartopy
import cartopy.crs as ccrs
import matplotlib.pyplot as plt
forecast = f"{date}"
variable = "t2m"
step = 4 # lead time = 1 hr
plt.close("all")
# Create a correct Lambert Conformal projection
projection = ccrs.LambertConformal(
central_longitude=262.5,
central_latitude=38.5,
standard_parallels=(38.5, 38.5),
globe=ccrs.Globe(semimajor_axis=6371229, semiminor_axis=6371229),
)
# Create a figure and axes with the specified projection
fig, ax = plt.subplots(subplot_kw={"projection": projection}, figsize=(10, 6))
# Plot the field using pcolormesh
im = ax.pcolormesh(
io["lon"][:],
io["lat"][:],
io[variable][0, step],
transform=ccrs.PlateCarree(),
cmap="Spectral_r",
)
# Set state lines
ax.add_feature(
cartopy.feature.STATES.with_scale("50m"), linewidth=0.5, edgecolor="black", zorder=2
)
# Set title
ax.set_title(f"{forecast} - Lead time: {step}hrs")
# Add coastlines and gridlines
ax.coastlines()
ax.gridlines()
plt.savefig(f"outputs/09_{date}_t2m_prediction.jpg")

Total running time of the script: (3 minutes 42.915 seconds)