Skip to content

StormScope Meteosat FCI Nowcasting

StormScope inference workflow with MTG-I1 FCI satellite imagery.

This example will demonstrate how to run inference to generate nowcasts of Meteosat Third Generation (MTG-I1) FCI satellite imagery using StormScopeMeteosatEU, a generative diffusion model that predicts the next 10-minute FCI frame from a sliding window of recent observations.

In this example you will learn:

Set Up

StormScopeMeteosatEU is a pure-observation nowcasting model: it requires no external NWP conditioning. The only input is a sliding window of L consecutive FCI frames ending at the analysis time.

The model operates on a rectangular sub-region of the full MTG disk defined in native FCI pixel coordinates by [StormScopeMeteosatEU.Model_FCI_BBox][]. We configure earth2studio.data.MeteosatFCI with the matching pixel_bbox so that data fetching returns exactly the pixels the model expects, with no interpolation needed.

EUMETSAT Data Store credentials must be available via the environment variables EUMETSAT_CONSUMER_KEY and EUMETSAT_CONSUMER_SECRET, or in the ~/.eumdac/credentials file.

import os
from datetime import datetime, timezone

os.makedirs("outputs", exist_ok=True)
from dotenv import load_dotenv

load_dotenv()

import cartopy.crs as ccrs
import matplotlib.pyplot as plt
import numpy as np
import torch
from tqdm import tqdm

from earth2studio.data import fetch_data
from earth2studio.data.meteosat_fci import (
    PERSPECTIVE_POINT_HEIGHT,
    SEMI_MAJOR_AXIS,
    SEMI_MINOR_AXIS,
    MeteosatFCI,
)
from earth2studio.models.px.stormscope_meteosat import StormScopeMeteosatEU
from earth2studio.utils.coords import map_coords

Load Model

Load StormScopeMeteosatEU from a package.

device = torch.device("cuda" if torch.cuda.is_available() else "cpu")

package = StormScopeMeteosatEU.load_default_package()
model = StormScopeMeteosatEU.load_model(package=package)
model = model.to(device)
model.eval()
model.compile_model()
Console output247 lines
Downloading config.yaml: 0%|          | 0.00/438 [00:00<?, ?B/s]
Downloading config.yaml: 100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 438/438 [00:00<00:00, 2.03kB/s]
Downloading config.yaml: 100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 438/438 [00:00<00:00, 2.02kB/s]

Downloading StormscopeMTG-low.mdlus: 0%|          | 0.00/1.14G [00:00<?, ?B/s]
Downloading StormscopeMTG-low.mdlus: 1%|          | 10.0M/1.14G [00:01<03:01, 6.69MB/s]
Downloading StormscopeMTG-low.mdlus: 2%|โ–         | 20.0M/1.14G [00:01<01:23, 14.3MB/s]
Downloading StormscopeMTG-low.mdlus: 3%|โ–Ž         | 30.0M/1.14G [00:01<00:55, 21.3MB/s]
Downloading StormscopeMTG-low.mdlus: 3%|โ–Ž         | 40.0M/1.14G [00:02<00:42, 27.7MB/s]
Downloading StormscopeMTG-low.mdlus: 4%|โ–         | 50.0M/1.14G [00:02<00:36, 32.4MB/s]
Downloading StormscopeMTG-low.mdlus: 5%|โ–Œ         | 60.0M/1.14G [00:02<00:31, 36.4MB/s]
Downloading StormscopeMTG-low.mdlus: 6%|โ–Œ         | 70.0M/1.14G [00:04<01:20, 14.3MB/s]
Downloading StormscopeMTG-low.mdlus: 7%|โ–‹         | 80.0M/1.14G [00:04<01:09, 16.5MB/s]
Downloading StormscopeMTG-low.mdlus: 8%|โ–Š         | 90.0M/1.14G [00:04<00:55, 20.2MB/s]
Downloading StormscopeMTG-low.mdlus: 9%|โ–Š         | 100M/1.14G [00:05<00:43, 25.5MB/s] 
Downloading StormscopeMTG-low.mdlus: 9%|โ–‰         | 110M/1.14G [00:05<00:35, 31.3MB/s]
Downloading StormscopeMTG-low.mdlus: 10%|โ–ˆ         | 120M/1.14G [00:05<00:29, 37.7MB/s]
Downloading StormscopeMTG-low.mdlus: 11%|โ–ˆ         | 130M/1.14G [00:05<00:23, 45.6MB/s]
Downloading StormscopeMTG-low.mdlus: 12%|โ–ˆโ–        | 140M/1.14G [00:05<00:22, 47.7MB/s]
Downloading StormscopeMTG-low.mdlus: 13%|โ–ˆโ–Ž        | 150M/1.14G [00:05<00:22, 47.6MB/s]
Downloading StormscopeMTG-low.mdlus: 14%|โ–ˆโ–Ž        | 160M/1.14G [00:06<00:21, 49.3MB/s]
Downloading StormscopeMTG-low.mdlus: 15%|โ–ˆโ–        | 170M/1.14G [00:06<00:21, 48.3MB/s]
Downloading StormscopeMTG-low.mdlus: 15%|โ–ˆโ–Œ        | 180M/1.14G [00:06<00:21, 47.6MB/s]
Downloading StormscopeMTG-low.mdlus: 16%|โ–ˆโ–‹        | 190M/1.14G [00:06<00:21, 47.2MB/s]
Downloading StormscopeMTG-low.mdlus: 17%|โ–ˆโ–‹        | 200M/1.14G [00:07<00:28, 36.0MB/s]
Downloading StormscopeMTG-low.mdlus: 18%|โ–ˆโ–Š        | 210M/1.14G [00:07<00:24, 40.7MB/s]
Downloading StormscopeMTG-low.mdlus: 19%|โ–ˆโ–‰        | 220M/1.14G [00:07<00:23, 41.7MB/s]
Downloading StormscopeMTG-low.mdlus: 20%|โ–ˆโ–‰        | 230M/1.14G [00:07<00:20, 49.1MB/s]
Downloading StormscopeMTG-low.mdlus: 21%|โ–ˆโ–ˆ        | 240M/1.14G [00:07<00:19, 51.0MB/s]
Downloading StormscopeMTG-low.mdlus: 21%|โ–ˆโ–ˆโ–       | 250M/1.14G [00:08<00:19, 49.0MB/s]
Downloading StormscopeMTG-low.mdlus: 22%|โ–ˆโ–ˆโ–       | 260M/1.14G [00:08<00:25, 37.3MB/s]
Downloading StormscopeMTG-low.mdlus: 23%|โ–ˆโ–ˆโ–Ž       | 270M/1.14G [00:08<00:22, 41.2MB/s]
Downloading StormscopeMTG-low.mdlus: 24%|โ–ˆโ–ˆโ–       | 280M/1.14G [00:09<00:20, 46.1MB/s]
Downloading StormscopeMTG-low.mdlus: 25%|โ–ˆโ–ˆโ–       | 290M/1.14G [00:09<00:19, 46.4MB/s]
Downloading StormscopeMTG-low.mdlus: 26%|โ–ˆโ–ˆโ–Œ       | 300M/1.14G [00:09<00:17, 50.8MB/s]
Downloading StormscopeMTG-low.mdlus: 27%|โ–ˆโ–ˆโ–‹       | 310M/1.14G [00:09<00:17, 50.8MB/s]
Downloading StormscopeMTG-low.mdlus: 27%|โ–ˆโ–ˆโ–‹       | 320M/1.14G [00:10<00:26, 34.0MB/s]
Downloading StormscopeMTG-low.mdlus: 28%|โ–ˆโ–ˆโ–Š       | 330M/1.14G [00:10<00:22, 39.5MB/s]
Downloading StormscopeMTG-low.mdlus: 29%|โ–ˆโ–ˆโ–‰       | 340M/1.14G [00:10<00:19, 45.0MB/s]
Downloading StormscopeMTG-low.mdlus: 30%|โ–ˆโ–ˆโ–‰       | 350M/1.14G [00:10<00:21, 40.2MB/s]
Downloading StormscopeMTG-low.mdlus: 31%|โ–ˆโ–ˆโ–ˆ       | 360M/1.14G [00:10<00:19, 44.1MB/s]
Downloading StormscopeMTG-low.mdlus: 32%|โ–ˆโ–ˆโ–ˆโ–      | 370M/1.14G [00:11<00:17, 47.0MB/s]
Downloading StormscopeMTG-low.mdlus: 33%|โ–ˆโ–ˆโ–ˆโ–Ž      | 380M/1.14G [00:11<00:16, 50.0MB/s]
Downloading StormscopeMTG-low.mdlus: 33%|โ–ˆโ–ˆโ–ˆโ–Ž      | 390M/1.14G [00:12<00:40, 20.3MB/s]
Downloading StormscopeMTG-low.mdlus: 34%|โ–ˆโ–ˆโ–ˆโ–      | 400M/1.14G [00:12<00:32, 24.7MB/s]
Downloading StormscopeMTG-low.mdlus: 35%|โ–ˆโ–ˆโ–ˆโ–Œ      | 410M/1.14G [00:13<00:28, 28.0MB/s]
Downloading StormscopeMTG-low.mdlus: 36%|โ–ˆโ–ˆโ–ˆโ–Œ      | 420M/1.14G [00:13<00:25, 31.0MB/s]
Downloading StormscopeMTG-low.mdlus: 37%|โ–ˆโ–ˆโ–ˆโ–‹      | 430M/1.14G [00:13<00:22, 34.6MB/s]
Downloading StormscopeMTG-low.mdlus: 38%|โ–ˆโ–ˆโ–ˆโ–Š      | 440M/1.14G [00:13<00:20, 37.2MB/s]
Downloading StormscopeMTG-low.mdlus: 39%|โ–ˆโ–ˆโ–ˆโ–Š      | 450M/1.14G [00:14<00:25, 29.0MB/s]
Downloading StormscopeMTG-low.mdlus: 39%|โ–ˆโ–ˆโ–ˆโ–‰      | 460M/1.14G [00:14<00:21, 34.1MB/s]
Downloading StormscopeMTG-low.mdlus: 40%|โ–ˆโ–ˆโ–ˆโ–ˆ      | 470M/1.14G [00:14<00:19, 37.3MB/s]
Downloading StormscopeMTG-low.mdlus: 41%|โ–ˆโ–ˆโ–ˆโ–ˆ      | 480M/1.14G [00:14<00:18, 39.9MB/s]
Downloading StormscopeMTG-low.mdlus: 42%|โ–ˆโ–ˆโ–ˆโ–ˆโ–     | 490M/1.14G [00:15<00:16, 42.9MB/s]
Downloading StormscopeMTG-low.mdlus: 43%|โ–ˆโ–ˆโ–ˆโ–ˆโ–Ž     | 500M/1.14G [00:15<00:16, 43.0MB/s]
Downloading StormscopeMTG-low.mdlus: 44%|โ–ˆโ–ˆโ–ˆโ–ˆโ–Ž     | 510M/1.14G [00:15<00:14, 48.7MB/s]
Downloading StormscopeMTG-low.mdlus: 45%|โ–ˆโ–ˆโ–ˆโ–ˆโ–     | 520M/1.14G [00:16<00:19, 34.8MB/s]
Downloading StormscopeMTG-low.mdlus: 45%|โ–ˆโ–ˆโ–ˆโ–ˆโ–Œ     | 530M/1.14G [00:16<00:16, 40.6MB/s]
Downloading StormscopeMTG-low.mdlus: 46%|โ–ˆโ–ˆโ–ˆโ–ˆโ–Œ     | 540M/1.14G [00:16<00:15, 42.9MB/s]
Downloading StormscopeMTG-low.mdlus: 47%|โ–ˆโ–ˆโ–ˆโ–ˆโ–‹     | 550M/1.14G [00:16<00:14, 43.6MB/s]
Downloading StormscopeMTG-low.mdlus: 48%|โ–ˆโ–ˆโ–ˆโ–ˆโ–Š     | 560M/1.14G [00:16<00:13, 46.9MB/s]
Downloading StormscopeMTG-low.mdlus: 49%|โ–ˆโ–ˆโ–ˆโ–ˆโ–‰     | 570M/1.14G [00:16<00:12, 49.7MB/s]
Downloading StormscopeMTG-low.mdlus: 50%|โ–ˆโ–ˆโ–ˆโ–ˆโ–‰     | 580M/1.14G [00:17<00:16, 37.4MB/s]
Downloading StormscopeMTG-low.mdlus: 50%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ     | 590M/1.14G [00:17<00:16, 36.6MB/s]
Downloading StormscopeMTG-low.mdlus: 51%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–    | 600M/1.14G [00:17<00:14, 40.3MB/s]
Downloading StormscopeMTG-low.mdlus: 52%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–    | 610M/1.14G [00:18<00:14, 40.3MB/s]
Downloading StormscopeMTG-low.mdlus: 53%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–Ž    | 620M/1.14G [00:18<00:17, 32.1MB/s]
Downloading StormscopeMTG-low.mdlus: 54%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–    | 630M/1.14G [00:18<00:14, 40.0MB/s]
Downloading StormscopeMTG-low.mdlus: 55%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–    | 640M/1.14G [00:19<00:16, 33.2MB/s]
Downloading StormscopeMTG-low.mdlus: 56%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–Œ    | 650M/1.14G [00:19<00:14, 36.3MB/s]
Downloading StormscopeMTG-low.mdlus: 56%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‹    | 660M/1.14G [00:19<00:12, 41.6MB/s]
Downloading StormscopeMTG-low.mdlus: 57%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‹    | 670M/1.14G [00:19<00:12, 43.0MB/s]
Downloading StormscopeMTG-low.mdlus: 58%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–Š    | 680M/1.14G [00:20<00:11, 46.1MB/s]
Downloading StormscopeMTG-low.mdlus: 59%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‰    | 690M/1.14G [00:20<00:10, 47.9MB/s]
Downloading StormscopeMTG-low.mdlus: 60%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‰    | 700M/1.14G [00:20<00:09, 53.5MB/s]
Downloading StormscopeMTG-low.mdlus: 61%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ    | 710M/1.14G [00:20<00:14, 32.5MB/s]
Downloading StormscopeMTG-low.mdlus: 62%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–   | 720M/1.14G [00:21<00:12, 37.9MB/s]
Downloading StormscopeMTG-low.mdlus: 62%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–   | 730M/1.14G [00:21<00:11, 40.2MB/s]
Downloading StormscopeMTG-low.mdlus: 63%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–Ž   | 740M/1.14G [00:21<00:10, 42.6MB/s]
Downloading StormscopeMTG-low.mdlus: 64%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–   | 750M/1.14G [00:21<00:09, 44.5MB/s]
Downloading StormscopeMTG-low.mdlus: 65%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–Œ   | 760M/1.14G [00:22<00:09, 46.8MB/s]
Downloading StormscopeMTG-low.mdlus: 66%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–Œ   | 770M/1.14G [00:22<00:11, 35.7MB/s]
Downloading StormscopeMTG-low.mdlus: 67%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‹   | 780M/1.14G [00:22<00:10, 39.4MB/s]
Downloading StormscopeMTG-low.mdlus: 68%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–Š   | 790M/1.14G [00:22<00:09, 40.6MB/s]
Downloading StormscopeMTG-low.mdlus: 68%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–Š   | 800M/1.14G [00:23<00:08, 45.0MB/s]
Downloading StormscopeMTG-low.mdlus: 69%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‰   | 810M/1.14G [00:23<00:08, 46.9MB/s]
Downloading StormscopeMTG-low.mdlus: 70%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ   | 820M/1.14G [00:23<00:07, 48.0MB/s]
Downloading StormscopeMTG-low.mdlus: 71%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ   | 830M/1.14G [00:23<00:08, 41.3MB/s]
Downloading StormscopeMTG-low.mdlus: 72%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–  | 840M/1.14G [00:24<00:11, 30.3MB/s]
Downloading StormscopeMTG-low.mdlus: 73%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–Ž  | 850M/1.14G [00:24<00:09, 36.6MB/s]
Downloading StormscopeMTG-low.mdlus: 74%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–Ž  | 860M/1.14G [00:24<00:08, 39.3MB/s]
Downloading StormscopeMTG-low.mdlus: 74%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–  | 870M/1.14G [00:24<00:06, 44.9MB/s]
Downloading StormscopeMTG-low.mdlus: 75%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–Œ  | 880M/1.14G [00:25<00:06, 45.0MB/s]
Downloading StormscopeMTG-low.mdlus: 76%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–Œ  | 890M/1.14G [00:25<00:06, 47.8MB/s]
Downloading StormscopeMTG-low.mdlus: 77%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‹  | 900M/1.14G [00:25<00:07, 35.4MB/s]
Downloading StormscopeMTG-low.mdlus: 78%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–Š  | 910M/1.14G [00:25<00:06, 42.2MB/s]
Downloading StormscopeMTG-low.mdlus: 79%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–Š  | 920M/1.14G [00:26<00:05, 46.0MB/s]
Downloading StormscopeMTG-low.mdlus: 80%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‰  | 930M/1.14G [00:26<00:05, 47.6MB/s]
Downloading StormscopeMTG-low.mdlus: 80%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ  | 940M/1.14G [00:26<00:04, 51.6MB/s]
Downloading StormscopeMTG-low.mdlus: 81%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ– | 950M/1.14G [00:26<00:03, 57.6MB/s]
Downloading StormscopeMTG-low.mdlus: 82%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ– | 960M/1.14G [00:27<00:06, 33.4MB/s]
Downloading StormscopeMTG-low.mdlus: 83%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–Ž | 970M/1.14G [00:27<00:05, 40.1MB/s]
Downloading StormscopeMTG-low.mdlus: 84%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ– | 980M/1.14G [00:27<00:04, 43.2MB/s]
Downloading StormscopeMTG-low.mdlus: 85%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ– | 990M/1.14G [00:27<00:04, 46.4MB/s]
Downloading StormscopeMTG-low.mdlus: 86%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–Œ | 0.98G/1.14G [00:27<00:03, 49.4MB/s]
Downloading StormscopeMTG-low.mdlus: 86%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‹ | 0.99G/1.14G [00:28<00:03, 50.7MB/s]
Downloading StormscopeMTG-low.mdlus: 87%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‹ | 1.00G/1.14G [00:28<00:03, 49.1MB/s]
Downloading StormscopeMTG-low.mdlus: 88%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–Š | 1.01G/1.14G [00:29<00:04, 29.9MB/s]
Downloading StormscopeMTG-low.mdlus: 89%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‰ | 1.02G/1.14G [00:29<00:05, 24.2MB/s]
Downloading StormscopeMTG-low.mdlus: 90%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‰ | 1.03G/1.14G [00:30<00:06, 19.6MB/s]
Downloading StormscopeMTG-low.mdlus: 91%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ | 1.04G/1.14G [00:31<00:06, 17.5MB/s]
Downloading StormscopeMTG-low.mdlus: 92%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–| 1.04G/1.14G [00:31<00:06, 16.3MB/s]
Downloading StormscopeMTG-low.mdlus: 92%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–| 1.05G/1.14G [00:32<00:05, 15.8MB/s]
Downloading StormscopeMTG-low.mdlus: 93%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–Ž| 1.06G/1.14G [00:33<00:06, 13.5MB/s]
Downloading StormscopeMTG-low.mdlus: 94%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–| 1.07G/1.14G [00:34<00:05, 13.0MB/s]
Downloading StormscopeMTG-low.mdlus: 95%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–| 1.08G/1.14G [00:35<00:04, 12.6MB/s]
Downloading StormscopeMTG-low.mdlus: 96%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–Œ| 1.09G/1.14G [00:36<00:04, 12.4MB/s]
Downloading StormscopeMTG-low.mdlus: 97%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‹| 1.10G/1.14G [00:37<00:03, 12.4MB/s]
Downloading StormscopeMTG-low.mdlus: 98%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–Š| 1.11G/1.14G [00:37<00:02, 12.5MB/s]
Downloading StormscopeMTG-low.mdlus: 98%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–Š| 1.12G/1.14G [00:38<00:01, 12.5MB/s]
Downloading StormscopeMTG-low.mdlus: 99%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‰| 1.13G/1.14G [00:39<00:00, 13.3MB/s]
Downloading StormscopeMTG-low.mdlus: 100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 1.14G/1.14G [00:39<00:00, 16.7MB/s]
Downloading StormscopeMTG-low.mdlus: 100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 1.14G/1.14G [00:39<00:00, 30.9MB/s]

Downloading StormscopeMTG-high.mdlus: 0%|          | 0.00/1.14G [00:00<?, ?B/s]
Downloading StormscopeMTG-high.mdlus: 1%|          | 10.0M/1.14G [00:01<02:43, 7.43MB/s]
Downloading StormscopeMTG-high.mdlus: 2%|โ–         | 20.0M/1.14G [00:01<01:20, 15.0MB/s]
Downloading StormscopeMTG-high.mdlus: 3%|โ–Ž         | 30.0M/1.14G [00:01<00:53, 22.3MB/s]
Downloading StormscopeMTG-high.mdlus: 3%|โ–Ž         | 40.0M/1.14G [00:02<00:42, 27.9MB/s]
Downloading StormscopeMTG-high.mdlus: 4%|โ–         | 50.0M/1.14G [00:02<00:34, 34.4MB/s]
Downloading StormscopeMTG-high.mdlus: 5%|โ–Œ         | 60.0M/1.14G [00:02<00:31, 37.5MB/s]
Downloading StormscopeMTG-high.mdlus: 6%|โ–Œ         | 70.0M/1.14G [00:03<00:43, 26.6MB/s]
Downloading StormscopeMTG-high.mdlus: 7%|โ–‹         | 80.0M/1.14G [00:03<00:33, 33.9MB/s]
Downloading StormscopeMTG-high.mdlus: 8%|โ–Š         | 90.0M/1.14G [00:03<00:28, 39.6MB/s]
Downloading StormscopeMTG-high.mdlus: 9%|โ–Š         | 100M/1.14G [00:03<00:24, 45.1MB/s] 
Downloading StormscopeMTG-high.mdlus: 9%|โ–‰         | 110M/1.14G [00:03<00:23, 46.2MB/s]
Downloading StormscopeMTG-high.mdlus: 10%|โ–ˆ         | 120M/1.14G [00:03<00:20, 54.2MB/s]
Downloading StormscopeMTG-high.mdlus: 11%|โ–ˆ         | 130M/1.14G [00:04<00:27, 39.2MB/s]
Downloading StormscopeMTG-high.mdlus: 12%|โ–ˆโ–        | 140M/1.14G [00:04<00:23, 45.0MB/s]
Downloading StormscopeMTG-high.mdlus: 13%|โ–ˆโ–Ž        | 150M/1.14G [00:04<00:22, 47.7MB/s]
Downloading StormscopeMTG-high.mdlus: 14%|โ–ˆโ–Ž        | 160M/1.14G [00:04<00:21, 49.3MB/s]
Downloading StormscopeMTG-high.mdlus: 15%|โ–ˆโ–        | 170M/1.14G [00:04<00:18, 55.8MB/s]
Downloading StormscopeMTG-high.mdlus: 15%|โ–ˆโ–Œ        | 180M/1.14G [00:05<00:18, 54.7MB/s]
Downloading StormscopeMTG-high.mdlus: 16%|โ–ˆโ–‹        | 190M/1.14G [00:05<00:17, 57.4MB/s]
Downloading StormscopeMTG-high.mdlus: 17%|โ–ˆโ–‹        | 200M/1.14G [00:06<00:51, 19.8MB/s]
Downloading StormscopeMTG-high.mdlus: 18%|โ–ˆโ–Š        | 210M/1.14G [00:06<00:41, 24.4MB/s]
Downloading StormscopeMTG-high.mdlus: 19%|โ–ˆโ–‰        | 220M/1.14G [00:06<00:31, 31.1MB/s]
Downloading StormscopeMTG-high.mdlus: 21%|โ–ˆโ–ˆ        | 240M/1.14G [00:07<00:20, 46.9MB/s]
Downloading StormscopeMTG-high.mdlus: 22%|โ–ˆโ–ˆโ–       | 260M/1.14G [00:07<00:17, 54.3MB/s]
Downloading StormscopeMTG-high.mdlus: 23%|โ–ˆโ–ˆโ–Ž       | 270M/1.14G [00:07<00:16, 57.8MB/s]
Downloading StormscopeMTG-high.mdlus: 24%|โ–ˆโ–ˆโ–       | 280M/1.14G [00:07<00:15, 60.4MB/s]
Downloading StormscopeMTG-high.mdlus: 25%|โ–ˆโ–ˆโ–       | 290M/1.14G [00:07<00:15, 57.9MB/s]
Downloading StormscopeMTG-high.mdlus: 26%|โ–ˆโ–ˆโ–Œ       | 300M/1.14G [00:08<00:16, 56.2MB/s]
Downloading StormscopeMTG-high.mdlus: 27%|โ–ˆโ–ˆโ–‹       | 310M/1.14G [00:08<00:15, 57.8MB/s]
Downloading StormscopeMTG-high.mdlus: 27%|โ–ˆโ–ˆโ–‹       | 320M/1.14G [00:08<00:20, 42.5MB/s]
Downloading StormscopeMTG-high.mdlus: 28%|โ–ˆโ–ˆโ–Š       | 330M/1.14G [00:08<00:19, 45.6MB/s]
Downloading StormscopeMTG-high.mdlus: 29%|โ–ˆโ–ˆโ–‰       | 340M/1.14G [00:09<00:16, 51.5MB/s]
Downloading StormscopeMTG-high.mdlus: 30%|โ–ˆโ–ˆโ–‰       | 350M/1.14G [00:09<00:16, 53.4MB/s]
Downloading StormscopeMTG-high.mdlus: 31%|โ–ˆโ–ˆโ–ˆ       | 360M/1.14G [00:09<00:16, 51.6MB/s]
Downloading StormscopeMTG-high.mdlus: 32%|โ–ˆโ–ˆโ–ˆโ–      | 370M/1.14G [00:09<00:14, 58.3MB/s]
Downloading StormscopeMTG-high.mdlus: 33%|โ–ˆโ–ˆโ–ˆโ–Ž      | 380M/1.14G [00:09<00:14, 55.5MB/s]
Downloading StormscopeMTG-high.mdlus: 33%|โ–ˆโ–ˆโ–ˆโ–Ž      | 390M/1.14G [00:10<00:20, 40.7MB/s]
Downloading StormscopeMTG-high.mdlus: 34%|โ–ˆโ–ˆโ–ˆโ–      | 400M/1.14G [00:10<00:18, 44.2MB/s]
Downloading StormscopeMTG-high.mdlus: 35%|โ–ˆโ–ˆโ–ˆโ–Œ      | 410M/1.14G [00:10<00:17, 46.5MB/s]
Downloading StormscopeMTG-high.mdlus: 36%|โ–ˆโ–ˆโ–ˆโ–Œ      | 420M/1.14G [00:10<00:16, 47.2MB/s]
Downloading StormscopeMTG-high.mdlus: 37%|โ–ˆโ–ˆโ–ˆโ–‹      | 430M/1.14G [00:11<00:16, 47.5MB/s]
Downloading StormscopeMTG-high.mdlus: 38%|โ–ˆโ–ˆโ–ˆโ–Š      | 440M/1.14G [00:11<00:15, 49.3MB/s]
Downloading StormscopeMTG-high.mdlus: 39%|โ–ˆโ–ˆโ–ˆโ–Š      | 450M/1.14G [00:11<00:20, 36.8MB/s]
Downloading StormscopeMTG-high.mdlus: 39%|โ–ˆโ–ˆโ–ˆโ–‰      | 460M/1.14G [00:11<00:17, 42.3MB/s]
Downloading StormscopeMTG-high.mdlus: 40%|โ–ˆโ–ˆโ–ˆโ–ˆ      | 470M/1.14G [00:12<00:15, 47.9MB/s]
Downloading StormscopeMTG-high.mdlus: 41%|โ–ˆโ–ˆโ–ˆโ–ˆ      | 480M/1.14G [00:12<00:14, 50.8MB/s]
Downloading StormscopeMTG-high.mdlus: 42%|โ–ˆโ–ˆโ–ˆโ–ˆโ–     | 490M/1.14G [00:12<00:13, 52.6MB/s]
Downloading StormscopeMTG-high.mdlus: 43%|โ–ˆโ–ˆโ–ˆโ–ˆโ–Ž     | 500M/1.14G [00:12<00:13, 53.7MB/s]
Downloading StormscopeMTG-high.mdlus: 44%|โ–ˆโ–ˆโ–ˆโ–ˆโ–Ž     | 510M/1.14G [00:12<00:12, 55.5MB/s]
Downloading StormscopeMTG-high.mdlus: 45%|โ–ˆโ–ˆโ–ˆโ–ˆโ–     | 520M/1.14G [00:13<00:16, 40.7MB/s]
Downloading StormscopeMTG-high.mdlus: 45%|โ–ˆโ–ˆโ–ˆโ–ˆโ–Œ     | 530M/1.14G [00:13<00:14, 46.4MB/s]
Downloading StormscopeMTG-high.mdlus: 46%|โ–ˆโ–ˆโ–ˆโ–ˆโ–Œ     | 540M/1.14G [00:13<00:13, 49.2MB/s]
Downloading StormscopeMTG-high.mdlus: 47%|โ–ˆโ–ˆโ–ˆโ–ˆโ–‹     | 550M/1.14G [00:13<00:12, 51.2MB/s]
Downloading StormscopeMTG-high.mdlus: 48%|โ–ˆโ–ˆโ–ˆโ–ˆโ–Š     | 560M/1.14G [00:13<00:11, 53.7MB/s]
Downloading StormscopeMTG-high.mdlus: 49%|โ–ˆโ–ˆโ–ˆโ–ˆโ–‰     | 570M/1.14G [00:14<00:11, 55.9MB/s]
Downloading StormscopeMTG-high.mdlus: 50%|โ–ˆโ–ˆโ–ˆโ–ˆโ–‰     | 580M/1.14G [00:14<00:15, 40.0MB/s]
Downloading StormscopeMTG-high.mdlus: 50%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ     | 590M/1.14G [00:14<00:13, 46.0MB/s]
Downloading StormscopeMTG-high.mdlus: 51%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–    | 600M/1.14G [00:14<00:12, 48.6MB/s]
Downloading StormscopeMTG-high.mdlus: 52%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–    | 610M/1.14G [00:14<00:11, 51.6MB/s]
Downloading StormscopeMTG-high.mdlus: 53%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–Ž    | 620M/1.14G [00:15<00:10, 55.2MB/s]
Downloading StormscopeMTG-high.mdlus: 54%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–    | 630M/1.14G [00:15<00:10, 55.3MB/s]
Downloading StormscopeMTG-high.mdlus: 55%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–    | 640M/1.14G [00:15<00:13, 41.0MB/s]
Downloading StormscopeMTG-high.mdlus: 56%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–Œ    | 650M/1.14G [00:15<00:12, 45.2MB/s]
Downloading StormscopeMTG-high.mdlus: 56%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‹    | 660M/1.14G [00:16<00:10, 50.5MB/s]
Downloading StormscopeMTG-high.mdlus: 57%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‹    | 670M/1.14G [00:16<00:10, 49.7MB/s]
Downloading StormscopeMTG-high.mdlus: 58%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–Š    | 680M/1.14G [00:16<00:09, 51.6MB/s]
Downloading StormscopeMTG-high.mdlus: 59%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‰    | 690M/1.14G [00:16<00:09, 54.7MB/s]
Downloading StormscopeMTG-high.mdlus: 60%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‰    | 700M/1.14G [00:16<00:08, 57.5MB/s]
Downloading StormscopeMTG-high.mdlus: 61%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ    | 710M/1.14G [00:17<00:12, 40.0MB/s]
Downloading StormscopeMTG-high.mdlus: 62%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–   | 720M/1.14G [00:17<00:10, 44.5MB/s]
Downloading StormscopeMTG-high.mdlus: 62%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–   | 730M/1.14G [00:17<00:09, 46.1MB/s]
Downloading StormscopeMTG-high.mdlus: 63%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–Ž   | 740M/1.14G [00:17<00:08, 52.3MB/s]
Downloading StormscopeMTG-high.mdlus: 64%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–   | 750M/1.14G [00:17<00:08, 53.7MB/s]
Downloading StormscopeMTG-high.mdlus: 65%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–Œ   | 760M/1.14G [00:18<00:07, 55.3MB/s]
Downloading StormscopeMTG-high.mdlus: 66%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–Œ   | 770M/1.14G [00:18<00:10, 39.3MB/s]
Downloading StormscopeMTG-high.mdlus: 67%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‹   | 780M/1.14G [00:18<00:09, 44.8MB/s]
Downloading StormscopeMTG-high.mdlus: 68%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–Š   | 790M/1.14G [00:18<00:08, 48.8MB/s]
Downloading StormscopeMTG-high.mdlus: 68%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–Š   | 800M/1.14G [00:19<00:07, 52.3MB/s]
Downloading StormscopeMTG-high.mdlus: 69%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‰   | 810M/1.14G [00:19<00:06, 54.6MB/s]
Downloading StormscopeMTG-high.mdlus: 70%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ   | 820M/1.14G [00:19<00:06, 56.3MB/s]
Downloading StormscopeMTG-high.mdlus: 71%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ   | 830M/1.14G [00:19<00:06, 56.9MB/s]
Downloading StormscopeMTG-high.mdlus: 72%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–  | 840M/1.14G [00:20<00:13, 24.6MB/s]
Downloading StormscopeMTG-high.mdlus: 73%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–Ž  | 850M/1.14G [00:20<00:11, 29.7MB/s]
Downloading StormscopeMTG-high.mdlus: 74%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–Ž  | 860M/1.14G [00:20<00:08, 36.0MB/s]
Downloading StormscopeMTG-high.mdlus: 74%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–  | 870M/1.14G [00:21<00:08, 37.4MB/s]
Downloading StormscopeMTG-high.mdlus: 75%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–Œ  | 880M/1.14G [00:21<00:07, 42.8MB/s]
Downloading StormscopeMTG-high.mdlus: 76%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–Œ  | 890M/1.14G [00:21<00:07, 37.7MB/s]
Downloading StormscopeMTG-high.mdlus: 77%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‹  | 900M/1.14G [00:22<00:12, 22.5MB/s]
Downloading StormscopeMTG-high.mdlus: 78%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–Š  | 910M/1.14G [00:22<00:09, 28.6MB/s]
Downloading StormscopeMTG-high.mdlus: 79%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–Š  | 920M/1.14G [00:22<00:07, 34.3MB/s]
Downloading StormscopeMTG-high.mdlus: 80%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‰  | 930M/1.14G [00:23<00:06, 37.7MB/s]
Downloading StormscopeMTG-high.mdlus: 80%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ  | 940M/1.14G [00:23<00:05, 45.0MB/s]
Downloading StormscopeMTG-high.mdlus: 81%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ– | 950M/1.14G [00:23<00:04, 49.3MB/s]
Downloading StormscopeMTG-high.mdlus: 82%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ– | 960M/1.14G [00:23<00:05, 37.8MB/s]
Downloading StormscopeMTG-high.mdlus: 83%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–Ž | 970M/1.14G [00:23<00:04, 42.0MB/s]
Downloading StormscopeMTG-high.mdlus: 84%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ– | 980M/1.14G [00:24<00:04, 49.0MB/s]
Downloading StormscopeMTG-high.mdlus: 85%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ– | 990M/1.14G [00:24<00:03, 47.8MB/s]
Downloading StormscopeMTG-high.mdlus: 86%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–Œ | 0.98G/1.14G [00:24<00:03, 49.3MB/s]
Downloading StormscopeMTG-high.mdlus: 86%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‹ | 0.99G/1.14G [00:24<00:03, 54.5MB/s]
Downloading StormscopeMTG-high.mdlus: 87%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‹ | 1.00G/1.14G [00:24<00:02, 52.0MB/s]
Downloading StormscopeMTG-high.mdlus: 88%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–Š | 1.01G/1.14G [00:25<00:03, 39.0MB/s]
Downloading StormscopeMTG-high.mdlus: 89%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‰ | 1.02G/1.14G [00:25<00:03, 44.3MB/s]
Downloading StormscopeMTG-high.mdlus: 90%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‰ | 1.03G/1.14G [00:25<00:02, 45.6MB/s]
Downloading StormscopeMTG-high.mdlus: 91%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ | 1.04G/1.14G [00:25<00:02, 52.1MB/s]
Downloading StormscopeMTG-high.mdlus: 92%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–| 1.04G/1.14G [00:26<00:01, 53.8MB/s]
Downloading StormscopeMTG-high.mdlus: 92%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–| 1.05G/1.14G [00:26<00:01, 59.6MB/s]
Downloading StormscopeMTG-high.mdlus: 93%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–Ž| 1.06G/1.14G [00:26<00:02, 37.8MB/s]
Downloading StormscopeMTG-high.mdlus: 94%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–| 1.07G/1.14G [00:26<00:01, 40.7MB/s]
Downloading StormscopeMTG-high.mdlus: 95%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–| 1.08G/1.14G [00:27<00:01, 43.6MB/s]
Downloading StormscopeMTG-high.mdlus: 96%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–Œ| 1.09G/1.14G [00:27<00:01, 47.7MB/s]
Downloading StormscopeMTG-high.mdlus: 97%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‹| 1.10G/1.14G [00:27<00:00, 50.9MB/s]
Downloading StormscopeMTG-high.mdlus: 98%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–Š| 1.11G/1.14G [00:27<00:00, 50.1MB/s]
Downloading StormscopeMTG-high.mdlus: 98%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–Š| 1.12G/1.14G [00:28<00:00, 35.7MB/s]
Downloading StormscopeMTG-high.mdlus: 99%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‰| 1.13G/1.14G [00:28<00:00, 30.6MB/s]
Downloading StormscopeMTG-high.mdlus: 100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 1.14G/1.14G [00:28<00:00, 34.9MB/s]
Downloading StormscopeMTG-high.mdlus: 100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 1.14G/1.14G [00:28<00:00, 42.6MB/s]

Downloading metadata.nc: 0%|          | 0.00/32.2M [00:00<?, ?B/s]
Downloading metadata.nc: 31%|โ–ˆโ–ˆโ–ˆ       | 10.0M/32.2M [00:00<00:02, 11.0MB/s]
Downloading metadata.nc: 62%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–   | 20.0M/32.2M [00:01<00:00, 20.8MB/s]
Downloading metadata.nc: 93%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–Ž| 30.0M/32.2M [00:01<00:00, 29.7MB/s]
Downloading metadata.nc: 100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 32.2M/32.2M [00:01<00:00, 23.5MB/s]

Set Up Data Sources

MeteosatFCI is configured with pixel_bbox matching the model's domain (Model_FCI_BBox) so that the returned y/x scan-angle coordinates align with what the model expects.

Meteosat FCI visible and NIR channels are provided by the EUMETSAT data store at 1 km resolution while IR channels are 2 km. The StormScope MTG model uses the 2 km grid for all channels, so we need to pull data from both 1 km and 2 km sources and do a minimal regrid on the visible and NIR channels.

Here we will set up data sources for both grid resolutions. The 1 km grid is exactly 2 times the pixels of the 2 km grid, so we get the 1 km bounding box by doubling the 2 km bounding box.

bbox_2km = StormScopeMeteosatEU.Model_FCI_BBox
FCI_BBox = {"2km": bbox_2km}
FCI_BBox["1km"] = (
    (2 * bbox_2km[0][0], 2 * bbox_2km[0][1]),
    (2 * bbox_2km[1][0], 2 * bbox_2km[1][1]),
)
fci = {
    res: MeteosatFCI(resolution=res, pixel_bbox=bbox)
    for (res, bbox) in FCI_BBox.items()
}

Fetch Initial Condition

We fetch initial window of 6 consecutive FCI frames ending at the chosen analysis time. fetch_data calls the data source at start_time + lead_time for each lead-time offset defined by the model ([-50 min, -40 min, ..., 0 min] for a 6-frame window).

StormScope MTG uses the 2 km grid for all channels, so we use StormScopeMeteosatEU.combine_1km_2km_inputs to resize the channels retrieved from the 1 km data source.

# Start time; replace with any time for which MTG-I1 FCI data is available.
# StormScopeMeteosatEU was trained on November 2024 - May 2026 data; start times
# should generally be outside that period.
start_time = np.datetime64(datetime(2026, 6, 30, 12, 0, 0, tzinfo=timezone.utc))
in_coords = model.input_coords()
variables = in_coords["variable"]

with torch.no_grad():
    x_res = {}
    for res in ["2km", "1km"]:
        available_vars = fci[res].available_variables()
        if res == "1km":
            # use 2km version if variable available in both 1km and 2km
            available_vars -= fci["2km"].available_variables()
        variables_res = [var for var in variables if var in available_vars]
        x_res[res] = fetch_data(
            fci[res],
            time=np.array([start_time]),
            variable=variables_res,
            lead_time=in_coords["lead_time"],
            device=device,
        )

    # 2x downsample 1km data to common 2km grid
    x, coords = StormScopeMeteosatEU.combine_1km_2km_inputs(
        *x_res["1km"], *x_res["2km"]
    )
    del x_res
    # ensure data is on model grid (reorders variables if needed)
    x, coords = map_coords(x, coords, in_coords)
Console output65 lines
Downloading MTG products:   0%|          | 0/1 [00:00<?, ?it/s]

2026-09-03 11:34:18.421 | INFO     | earth2studio.data.meteosat_fci:_fetch_product:629 - Downloading MTG FCI product: W_XX-EUMETSAT-Darmstadt,IMG+SAT,MTI1+FCI-1C-RRAD-FDHSI-FD--x-x---x_C_EUMT_20260630111317_IDPFI_OPE_20260630111007_20260630111935_N__O_0068_0000

Downloading MTG products:   0%|          | 0/1 [00:06<?, ?it/s]
Downloading MTG products: 100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 1/1 [02:01<00:00, 121.87s/it]
Downloading MTG products: 100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 1/1 [02:01<00:00, 121.87s/it]

Downloading MTG products:   0%|          | 0/1 [00:00<?, ?it/s]

2026-09-03 11:36:25.505 | INFO     | earth2studio.data.meteosat_fci:_fetch_product:629 - Downloading MTG FCI product: W_XX-EUMETSAT-Darmstadt,IMG+SAT,MTI1+FCI-1C-RRAD-FDHSI-FD--x-x---x_C_EUMT_20260630112312_IDPFI_OPE_20260630112007_20260630112939_N__O_0069_0000

Downloading MTG products:   0%|          | 0/1 [00:06<?, ?it/s]
Downloading MTG products: 100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 1/1 [02:02<00:00, 122.99s/it]
Downloading MTG products: 100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 1/1 [02:02<00:00, 122.99s/it]

Downloading MTG products:   0%|          | 0/1 [00:00<?, ?it/s]

2026-09-03 11:38:31.280 | INFO     | earth2studio.data.meteosat_fci:_fetch_product:629 - Downloading MTG FCI product: W_XX-EUMETSAT-Darmstadt,IMG+SAT,MTI1+FCI-1C-RRAD-FDHSI-FD--x-x---x_C_EUMT_20260630113315_IDPFI_OPE_20260630113007_20260630113939_N__O_0070_0000

Downloading MTG products:   0%|          | 0/1 [00:05<?, ?it/s]
Downloading MTG products: 100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 1/1 [01:18<00:00, 78.60s/it]
Downloading MTG products: 100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 1/1 [01:18<00:00, 78.60s/it]

Downloading MTG products:   0%|          | 0/1 [00:00<?, ?it/s]

2026-09-03 11:39:52.150 | INFO     | earth2studio.data.meteosat_fci:_fetch_product:629 - Downloading MTG FCI product: W_XX-EUMETSAT-Darmstadt,IMG+SAT,MTI1+FCI-1C-RRAD-FDHSI-FD--x-x---x_C_EUMT_20260630114312_IDPFI_OPE_20260630114007_20260630114939_N__O_0071_0000

Downloading MTG products:   0%|          | 0/1 [00:04<?, ?it/s]
Downloading MTG products: 100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 1/1 [01:26<00:00, 86.07s/it]
Downloading MTG products: 100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 1/1 [01:26<00:00, 86.07s/it]

Downloading MTG products:   0%|          | 0/1 [00:00<?, ?it/s]

2026-09-03 11:41:21.551 | INFO     | earth2studio.data.meteosat_fci:_fetch_product:629 - Downloading MTG FCI product: W_XX-EUMETSAT-Darmstadt,IMG+SAT,MTI1+FCI-1C-RRAD-FDHSI-FD--x-x---x_C_EUMT_20260630115316_IDPFI_OPE_20260630115007_20260630115939_N__O_0072_0000

Downloading MTG products:   0%|          | 0/1 [00:04<?, ?it/s]
Downloading MTG products: 100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 1/1 [01:18<00:00, 78.47s/it]
Downloading MTG products: 100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 1/1 [01:18<00:00, 78.47s/it]

Downloading MTG products:   0%|          | 0/1 [00:00<?, ?it/s]

2026-09-03 11:42:47.390 | INFO     | earth2studio.data.meteosat_fci:_fetch_product:629 - Downloading MTG FCI product: W_XX-EUMETSAT-Darmstadt,IMG+SAT,MTI1+FCI-1C-RRAD-FDHSI-FD--x-x---x_C_EUMT_20260630120316_IDPFI_OPE_20260630120007_20260630120939_N__O_0073_0000

Downloading MTG products:   0%|          | 0/1 [00:07<?, ?it/s]
Downloading MTG products: 100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 1/1 [02:12<00:00, 132.69s/it]
Downloading MTG products: 100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 1/1 [02:12<00:00, 132.71s/it]

Downloading MTG products:   0%|          | 0/1 [00:00<?, ?it/s]
Downloading MTG products: 100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 1/1 [00:00<00:00, 672.92it/s]

Downloading MTG products:   0%|          | 0/1 [00:00<?, ?it/s]
Downloading MTG products: 100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 1/1 [00:00<00:00, 55.54it/s]

Downloading MTG products:   0%|          | 0/1 [00:00<?, ?it/s]
Downloading MTG products: 100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 1/1 [00:00<00:00, 53.65it/s]

Downloading MTG products:   0%|          | 0/1 [00:00<?, ?it/s]
Downloading MTG products: 100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 1/1 [00:00<00:00, 46.49it/s]

Downloading MTG products:   0%|          | 0/1 [00:00<?, ?it/s]
Downloading MTG products: 100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 1/1 [00:00<00:00, 44.95it/s]

Downloading MTG products:   0%|          | 0/1 [00:00<?, ?it/s]
Downloading MTG products: 100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 1/1 [00:00<00:00, 44.28it/s]

Add Ensemble Dimension

The model expects input of shape (ensemble, time, lead_time, variable, y, x). Up to GPU memory limits, ensemble_size can be increased to produce multiple independent ensemble members in a single forward pass.

ensemble_size = 1
x = x.expand(ensemble_size, -1, -1, -1, -1, -1)
coords["ensemble"] = np.arange(ensemble_size)
coords.move_to_end("ensemble", last=False)

Execute the Nowcast

create_iterator handles the autoregressive rollout for us: the first yielded value is the (unchanged) initial condition, and each subsequent value advances the prediction by one 10-minute interval.

n_steps = 12  # 2 hours of 10-minute forecast steps

for step, (x_pred, coords_pred) in enumerate(
    tqdm(model.create_iterator(x, coords), total=n_steps + 1)
):
    if step == n_steps:
        break
Console output13 lines
0%|          | 0/13 [00:00<?, ?it/s]
 15%|โ–ˆโ–Œ        | 2/13 [00:44<04:03, 22.16s/it]
 23%|โ–ˆโ–ˆโ–Ž       | 3/13 [01:13<04:11, 25.18s/it]
 31%|โ–ˆโ–ˆโ–ˆ       | 4/13 [01:52<04:31, 30.21s/it]
 38%|โ–ˆโ–ˆโ–ˆโ–Š      | 5/13 [02:44<05:01, 37.71s/it]
 46%|โ–ˆโ–ˆโ–ˆโ–ˆโ–Œ     | 6/13 [03:32<04:49, 41.35s/it]
 54%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–    | 7/13 [04:28<04:36, 46.05s/it]
 62%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–   | 8/13 [05:24<04:05, 49.16s/it]
 69%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‰   | 9/13 [06:20<03:25, 51.33s/it]
 77%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‹  | 10/13 [07:19<02:40, 53.56s/it]
 85%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ– | 11/13 [08:12<01:46, 53.42s/it]
 92%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–| 12/13 [09:09<00:54, 54.42s/it]
 92%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–| 12/13 [10:08<00:50, 50.69s/it]

Post Processing

Plot the final predicted FCI frame as a true-color RGB composite (VIS 0.6 / 0.5 / 0.4 ยตm) in geostationary projection. Off-Earth pixels are already set to NaN by denormalize.

rgb_channels = ["fci06vis", "fci05vis", "fci04vis"]
ch_idx = [list(model.variables).index(ch) for ch in rgb_channels]

# x_pred has shape (batch, time, 1, variable, y, x)
# here we approximately replicate EUMETSAT's recipe for "true-colour" RGB
rgb = (x_pred[0, 0, 0, ch_idx] / 24.0).clamp(min=0, max=1) * 255
rgb = rgb.permute(1, 2, 0).cpu().numpy()
rgb = np.interp(rgb, [0, 30, 60, 120, 190, 255], [0, 110, 160, 210, 240, 255]) / 255.0

proj = ccrs.Geostationary(
    central_longitude=0.0,
    satellite_height=PERSPECTIVE_POINT_HEIGHT,
    globe=ccrs.Globe(semimajor_axis=SEMI_MAJOR_AXIS, semiminor_axis=SEMI_MINOR_AXIS),
)
extent = MeteosatFCI.projection_extent(resolution="2km", pixel_bbox=bbox_2km)

aspect = (extent[1] - extent[0]) / (extent[3] - extent[2])
fig_height = 8
fig = plt.figure(figsize=(fig_height * aspect, fig_height))
ax = fig.add_subplot(1, 1, 1, projection=proj)
ax.set_xlim(extent[0], extent[1])
ax.set_ylim(extent[2], extent[3])

ax.coastlines(color="white", linewidth=0.8)

im = ax.imshow(rgb, transform=proj, extent=extent, origin="lower")

valid_time = coords_pred["time"][0]
valid_time = datetime.fromisoformat(str(valid_time)).strftime("%Y-%m-%d %H:%M")
lead_min = coords_pred["lead_time"][0].astype("timedelta64[m]").item()
lead_min = int(lead_min / np.timedelta64(1, "m"))
ax.set_title(
    f"StormScopeMeteosatEU โ€” RGB\n" f"Valid {valid_time} UTC  (+{lead_min} min)"
)

fig.tight_layout()
fig.savefig("outputs/04_stormcast_meteosat_example.png", dpi=150)
print("Saved outputs/04_stormcast_meteosat_example.png")
Console output1 line
Saved outputs/04_stormcast_meteosat_example.png

Output from StormScope Meteosat FCI Nowcasting


Execution profile

Runtime telemetry

Profiled phases

Total runtime23m 24s
Setup12m 49s ยท 727 samples
Duration12m 49sTagged cells
CPU load2%Average ยท Peak 28%
Process memory14.9 GiBPeak resident set
Network received8.1 GiBHost-wide estimate
Network sent30.0 MiBHost-wide estimate
GPU utilization0%Peak 0%
GPU memory3.5 GiBof 79.6 GiB
GPU power97 WPeak draw
Inference10m 8s ยท 574 samples
Duration10m 8sTagged cells
CPU load8%Average ยท Peak 25%
Process memory13.2 GiBPeak resident set
Network received0 BHost-wide estimate
Network sent0 BHost-wide estimate
GPU utilization98%Peak 100%
GPU memory13.7 GiBof 79.6 GiB
GPU power349 WPeak draw
Plotting2.3 s ยท 2 samples
Duration2.3 sTagged cells
CPU load8%Average ยท Peak 8%
Process memory7.8 GiBPeak resident set
Network received0 BHost-wide estimate
Network sent132 BHost-wide estimate
GPU utilization0%Peak 0%
GPU memory13.7 GiBof 79.6 GiB
GPU power132 WPeak draw

Execution environment

CPUAMD EPYC 7313P 16-Core Processor
GPUNVIDIA H100 PCIe ยท 79.6 GiB
System RAM58.5 GiB
PlatformLinux 6.8.0-137-generic
Python3.13.13
GPU driver / CUDADriver 595.84 ยท CUDA support 13.2