Reference for understanding Spire Weather file names. See also the GRIB2 and NetCDF glossary entries for file format details.
Standard Forecast Files¶
Pattern¶
{system}.{date}.{time}.{resolution}.{bundle}.{region}.{lead_time}.{format}Example¶
sof-d.20260911.t06z.0p125.basic.global.f006.grib2| Component | Value | Description |
|---|---|---|
sof-d | System | Spire Operational Forecast - Deterministic |
20260911 | Date | Issuance date (YYYYMMDD) |
t06z | Time | Issuance Time (UTC) |
0p125 | Resolution | 0.125° grid spacing |
basic | Bundle | Data bundle |
global | Region | Geographic coverage |
f006 | Lead time | Forecast Hour (6 hours ahead) |
grib2 | Format | File format |
Every product follows this pattern; the differences are in the resolution code, the bundle names and the form of the lead time. Examples per product:
| Product | Example file name |
|---|---|
sof-d | sof-d.20260911.t06z.0p125.maritime.europe.f024.grib2 |
cwc | cwc.20260911.t11z.0p027.basic.europe.grib2 (no lead time) |
srfs | srfs.20260911.t06z.03km.core-v2.conus.f006m00.grib2 |
saifs-wx | saifs-wx.20260911.t06z.0p25.core.global.f012.grib2 |
saifs-s2s | saifs-s2s.20260911.t00z.0p5.surface.europe.D001.grib2, …W001.grib2 |
saifs-s2s-regimes | saifs-s2s-regimes.20260911.t00z.CONUS.daily.csv |
saifs-wx-regimes | saifs-wx-regimes.20260911.t06z.EUATL.daily.csv |
smi | smi.20260907.t12z.6000m.d-mssm.global.v0201.nc |
lightning | lightning.20250130.t21m15.05km.core.conus-equal-area.f01m00.nc |
Component Reference¶
Forecast Systems¶
| Code | Description |
|---|---|
sof-d | Spire Operational Forecast - Deterministic Forecast (global, 0.125°) |
cwc | Current Weather Conditions (hourly analysis, 0.027°) |
srfs | Spire Regional Forecast System (3 km, CONUS and Europe) |
saifs-wx | Spire AI Weather Forecast (0.25°) |
saifs-s2s | Spire AI Sub-seasonal to Seasonal Forecast (0.5°) |
saifs-s2s-regimes, saifs-wx-regimes | Weather regime forecasts (CSV) |
smi | Soil Moisture Insights (NetCDF or GeoTIFF) |
lightning | Lightning density (NetCDF) |
Issuance Time¶
Format: tHHz where HH is the hour in UTC. Current weather files use every hour (t00z to t23z); lightning files add minutes (tHHmMM).
| Code | Time (UTC) | Used by |
|---|---|---|
t00z | 00:00 UTC | sof-d, saifs-wx, saifs-s2s, saifs-s2s-regimes, saifs-wx-regimes |
t06z | 06:00 UTC | sof-d, srfs, saifs-wx, saifs-wx-regimes |
t12z | 12:00 UTC | sof-d, srfs, saifs-wx, saifs-wx-regimes, smi |
t18z | 18:00 UTC | sof-d, saifs-wx, saifs-wx-regimes |
Resolution¶
Degree grids use the format XpYYY where X.YYY is the grid spacing in degrees; kilometre and metre grids state the spacing directly.
| Code | Grid spacing | Approximate distance | Used by |
|---|---|---|---|
0p027 | 0.027° | ~3 km | cwc |
03km | 3 km | 3 km | srfs |
05km | 5 km | 5 km | lightning |
6000m | 6 km | 6 km | smi |
0p125 | 0.125° | ~14 km | sof-d |
0p25 | 0.25° | ~28 km | saifs-wx |
0p5 | 0.5° | ~55 km | saifs-s2s |
Bundles¶
The bundle component is the bundle name exactly as accepted by the bundles query parameter. The :daily/:weekly suffix of SAIFS-S2S bundles is not part of the file name; the period is in the lead-time component.
| Product | Bundle codes in file names |
|---|---|
sof-d | basic, clouds, precipitation, thunderstorm, maritime, maritime-atmos, maritime-wave, maritime-wave-ext, agricultural, wind-energy, solar-energy, upper-air, aviation |
cwc | basic |
srfs | core-v2, upper-air, thunderstorm, derived (core is legacy) |
saifs-wx | core, upper-air, derived |
saifs-s2s | surface, upper-air, derived, derived-upper-air, probabilities, percentiles |
saifs-s2s-regimes, saifs-wx-regimes | none |
| Lightning | core |
The opt-in basic-accumulation, precipitation-accumulation and solar-energy-accumulation bundles exist only at the point endpoint and never appear in file names. See Data Bundles & Variables for the fields in each bundle.
Regions¶
Region codes are lower case and use hyphens inside a name and underscores between names.
| Code | Coverage | Products |
|---|---|---|
global | Worldwide | sof-d, cwc, saifs-wx, saifs-s2s, smi |
africa | Africa | sof-d, cwc |
asia | Asia | sof-d, cwc |
atlantic | Atlantic Ocean | sof-d, cwc |
conus | Contiguous United States | sof-d, cwc, srfs, saifs-wx |
europe | Europe | sof-d, cwc, srfs, saifs-wx, saifs-s2s |
north-america_central-america_caribbean | North America, Central America and the Caribbean | sof-d, cwc, saifs-s2s |
south-america | South America | sof-d, cwc |
south-west_pacific | South-West Pacific | sof-d, cwc |
CONUS, EUATL | Regime domains (upper case) | regimes CSV |
conus-equal-area | CONUS equal-area grid | lightning |
Subscriptions may include additional custom regions. Use the file list endpoint to see the exact region codes available to your account.
Lead Time¶
| Form | Meaning | Used by |
|---|---|---|
fHHH | Hours from issuance, e.g. f000 analysis, f006, f024, f168 (7 days), f360 (15 days) | sof-d, saifs-wx |
fHHHmMM | Hours and minutes from issuance, e.g. f006m00 | srfs, lightning (f01m00 = 1-hour window) |
Dnnn | Forecast day, 24-hour statistics, D001 to D046 | saifs-s2s :daily |
Wnnn | Forecast week, weekly statistics, W001 to W006 | saifs-s2s :weekly |
| none | Analysis file without lead time | cwc, smi |
See Lead Time.
File Formats¶
| Extension | Format |
|---|---|
.grib2 | GRIB2 (WMO standard) |
.nc | NetCDF |
.tif | GeoTIFF (soil moisture, on request) |
.csv | Comma-separated values (regimes, archive exports) |
.json | JSON (archive exports) |
Current Weather Files¶
Pattern¶
cwc.{date}.{time}.0p027.basic.{region}.grib2Example¶
cwc.20260911.t11z.0p027.basic.europe.grib2One file per region and hour; there is no lead-time component because each file is an analysis.
Soil Moisture Files¶
Pattern¶
smi.{date}.t12z.6000m.{product}.{region}.v{version}.{nc|tif}Example¶
smi.20260907.t12z.6000m.d-mssm.global.v0201.nc{product} is the soil moisture product name (for example d-mssm, d-essm-nrt) and v0201 the product version. See Soil Moisture.
Lightning Files¶
Pattern¶
lightning.{date}.tHHmMM.05km.core.conus-equal-area.f01m00.ncExample¶
lightning.20250130.t21m15.05km.core.conus-equal-area.f01m00.ncFiles are produced every 5 minutes; f01m00 denotes the 1-hour rolling window. See Lightning.
Weather Regime Files¶
Pattern¶
{saifs-s2s-regimes|saifs-wx-regimes}.{date}.{time}.{CONUS|EUATL}.daily.csvExample¶
saifs-s2s-regimes.20260911.t00z.CONUS.daily.csvSee Data Bundles & Variables for the CSV columns.
Archive Files¶
Archive files may be delivered as ZIP archives with directory structure:
{date}/
{hour}/
{filename}Example Structure¶
20260911/
00/
sof-d.20260911.t00z.0p125.basic.global.f000.grib2
sof-d.20260911.t00z.0p125.basic.global.f006.grib2
12/
sof-d.20260911.t12z.0p125.basic.global.f000.grib2Custom Product Files¶
Custom product file names are defined per customer. Contact your Spire representative for documentation of your custom file naming.
Parsing File Names in Python¶
The parser below handles hyphenated system names, hour-only and hour-minute lead times, and the Dnnn/Wnnn periods of SAIFS-S2S.
import re
from dataclasses import dataclass
from datetime import datetime
from typing import Optional
@dataclass
class ForecastFileInfo:
system: str
date: datetime
issuance_hour: int
resolution: str
bundle: str
region: str
lead: str # raw lead-time token, e.g. "f006", "f006m00", "D001", "W001"
lead_hours: Optional[float]
format: str
PATTERN = re.compile(
r'^(?P<system>[a-z0-9-]+)\.'
r'(?P<date>\d{8})\.'
r't(?P<hour>\d{2})z\.'
r'(?P<res>\d+p\d+|\d+km|\d+m)\.'
r'(?P<bundle>[a-z0-9-]+)\.'
r'(?P<region>[A-Za-z0-9_-]+)\.'
r'(?P<lead>f\d{3}(?:m\d{2})?|[DW]\d{3})\.'
r'(?P<fmt>\w+)$'
)
def lead_to_hours(lead):
"""Convert a lead-time token to hours; None for daily/weekly periods."""
if lead.startswith('f'):
hours = int(lead[1:4])
minutes = int(lead[5:7]) if 'm' in lead else 0
return hours + minutes / 60
return None # Dnnn / Wnnn periods
def parse_forecast_filename(filename):
"""Parse a standard forecast filename into components."""
match = PATTERN.match(filename)
if not match:
raise ValueError(f"Could not parse filename: {filename}")
g = match.groupdict()
return ForecastFileInfo(
system=g['system'],
date=datetime.strptime(g['date'], '%Y%m%d'),
issuance_hour=int(g['hour']),
resolution=g['res'],
bundle=g['bundle'],
region=g['region'],
lead=g['lead'],
lead_hours=lead_to_hours(g['lead']),
format=g['fmt'],
)
# Example usage
for filename in [
"sof-d.20260911.t06z.0p125.basic.global.f006.grib2",
"srfs.20260911.t06z.03km.core-v2.europe.f006m00.grib2",
"saifs-s2s.20260911.t00z.0p5.surface.europe.W001.grib2",
]:
info = parse_forecast_filename(filename)
print(f"{info.system:10} {info.date:%Y-%m-%d} {info.issuance_hour:02d}Z "
f"{info.resolution:6} {info.bundle:10} {info.region:10} "
f"lead={info.lead} ({info.lead_hours} h)")Filter Files by Lead Time¶
def filter_by_lead_time(filenames, min_hours=0, max_hours=48):
"""Filter forecast files by lead time range (hour-based files only)."""
result = []
for filename in filenames:
try:
info = parse_forecast_filename(filename)
except ValueError:
continue
if info.lead_hours is not None and min_hours <= info.lead_hours <= max_hours:
result.append(filename)
return result
# Get only 0-24 hour forecasts
short_range = filter_by_lead_time(file_list, max_hours=24)