Buckets:

PhiltheBuilder's picture
|
download
raw
7.54 kB

Weather model initial conditions

Analysis-ready atmospheric initial conditions on a 0.25° global grid, from two sources, in one file format. One file per init time, containing the inputs of the published data-driven weather models (GraphCast, GenCast, Pangu, Aurora, AIFS, FourCastNet/SFNO): take the fields your model needs.

Public; readable without a Hugging Face account.

source from available levels
ERA5 (bucket root) ARCO-ERA5 reanalysis ~6 days after the init 37
IFS (ifs/) ECMWF operational IFS analysis, open data ~8 hours after 14

Both use the same variable names, units, grid, orientation and timesteps, so code written for one reads the other. Each spec.json names its ic_source; an IFS one also lists what is absent under unavailable_variables and what only it has under extra_variables (see IFS source).

Layout

2026-09-10T00Z/          ERA5
  ic.nc        NetCDF4, float32, zlib-compressed, ~1.5 GB
  spec.json    field list, grid definition, provenance
ifs/2026-09-10T00Z/      IFS
  ic.nc        ~0.44 GB
  spec.json

One directory per init time, named YYYY-MM-DDTHHZ (UTC, synoptic hours only: 00, 06, 12, 18). A directory is complete only when its spec.json is present; without one it is mid-upload.

Contents

280 fields per timestep.

7 atmospheric variables on all 37 pressure levels of ERA5 (1 to 1000 hPa, ascending): geopotential, temperature, u_component_of_wind, v_component_of_wind, specific_humidity, vertical_velocity, relative_humidity — dims (time, level, latitude, longitude). Select the 13-level GraphCast/Pangu set with .sel(level=[50, 100, ..., 1000]).

21 surface variables: 2m_temperature, 10m_u_component_of_wind, 10m_v_component_of_wind, 100m_u_component_of_wind, 100m_v_component_of_wind, mean_sea_level_pressure, surface_pressure, 2m_dewpoint_temperature, skin_temperature, total_column_water_vapour, total_column_water, soil_temperature_level_1, soil_temperature_level_2, volumetric_soil_water_layer_1, volumetric_soil_water_layer_2, sea_surface_temperature, sea_ice_cover, total_precipitation, total_precipitation_6hr, total_precipitation_12hr, toa_incident_solar_radiation — dims (time, latitude, longitude)

5 static fields: geopotential_at_surface, land_sea_mask, soil_type, standard_deviation_of_orography, slope_of_sub_gridscale_orography — dims (latitude, longitude), time dimension already dropped

Three timesteps: T-12h, T-6h and T0, 6 hours apart. time[-1] is the init time.

Derived fields

Not in ARCO; computed when the file is built.

  • total_precipitation_6hr / _12hr: the sum of ERA5's hourly total_precipitation over the 6 or 12 hours ending at each step. Matches WeatherBench2's fields of the same name, which GraphCast and GenCast were trained on.
  • relative_humidity: percent, reproducing ECMWF's published ERA5 r (saturation over water above 0 °C, over ice below −23 °C, blended between; below ground, the near-surface value). Not clipped: like ECMWF's own field it exceeds 100% in cold air and can dip slightly below 0 where ERA5's specific humidity does. WeatherBench2's relative_humidity uses a water-only formula and differs; a model trained on it should recompute from temperature and specific_humidity.

Missing values

sea_surface_temperature and sea_ice_cover are NaN over land, as ERA5 publishes them. Every other field is finite everywhere.

Grid

0.25° global, 721 × 1440.

  • Latitude descends: 90.0 → -90.0
  • Longitude runs 0.0 → 359.75, not -180 → 180

Both are easy to assume backwards, and reading them the wrong way round yields output that looks plausible and is globally wrong.

Values are in SI units, as ERA5 publishes them: temperature in K, geopotential in m²/s² (divide by 9.80665 for metres), pressure in Pa.

Reading it

from huggingface_hub import download_bucket_files
import xarray as xr

download_bucket_files(
    "dClimate/forecast-ic",
    files=[("2026-09-10T00Z/ic.nc", "ic.nc")],
    token=False,          # public; no account needed
)
ds = xr.open_dataset("ic.nc")

Inside a Hugging Face Job, mount it instead of downloading:

Volume(type="bucket", source="dClimate/forecast-ic",
       mount_path="/inputs", read_only=True)

A check that your read is oriented correctly — for 2026-09-10T00Z:

quantity expected
500 hPa geopotential height, global mean ≈ 5539 m
2 m temperature, global mean ≈ 280.4 K
land fraction (land_sea_mask > 0.5) ≈ 33.9 %

Source and provenance

Built from ARCO-ERA5 (ar/full_37-1h-0p25deg-chunk-1.zarr-v3), Google's analysis-ready ERA5.

Each spec.json records the source store and its last_updated / valid_time_stop / valid_time_stop_era5t attributes at build time. ARCO publishes no content hash, so these attributes are how a file is pinned to an upstream release.

Files are immutable once published. ERA5T values are revised by the provider for several days after publication, so an init is built only once it is at least 5 days old, and is not rebuilt afterwards.

spec.json carries provenance.is_era5t. True means that init came from ERA5T rather than the finalized archive — still fixed here, but worth knowing when comparing against another ERA5 copy.

IFS source

Under ifs/: ECMWF's operational HRES analysis from open data, 00Z inits, published about eight hours after the init. Each step is the step-0 analysis of the run at that time.

  • 14 pressure levels: 10, 50, 100, 150, 200, 250, 300, 400, 500, 600, 700, 850, 925, 1000 hPa. Every 13-level model's set is included.
  • relative_humidity is ECMWF's own r from the same analysis.
  • total_precipitation_6hr / _12hr are the forecast totals of the runs that started 6 and 12 hours before each step (the 18Z run's first six hours, for the 6h total at 00Z).
  • Not present: total_precipitation (hourly; open data is 3-hourly), toa_incident_solar_radiation, sea_surface_temperature, sea_ice_cover, soil_type.
  • Only here (extra_variables): snow_depth (m of water equivalent) and eleven fields from the wave model's analysis: significant_height_of_combined_wind_waves_and_swell, significant_wave_height_{10_to_12,12_to_14,14_to_17,17_to_21,21_to_25,25_to_30}s, mean_wave_direction, mean_wave_period, coefficient_of_drag_with_waves, model_bathymetry. The wave fields are NaN wherever the wave model has no open sea: land, lakes and sea ice, about 36% of the grid (ocean_only_variables). These are what ECMWF's AIFS Single 2.0 reads.
  • From 2026-05-13T00Z, the first init after IFS cycle 50r1, which added the wave fields to open data. spec_version 1.1.0.

The operational analysis is not revised, so an init is final when published. spec.json's provenance.runs lists the exact open-data files it was built from.

Retention

Rolling 6 months (183 days) for each source. Older inits are removed.


ERA5 is produced by ECMWF and distributed via the Copernicus Climate Change Service (C3S); neither ECMWF nor C3S is responsible for any use made of it here. The IFS files are derived from ECMWF open data, © ECMWF, licensed under CC BY 4.0.

Xet Storage Details

Size:
7.54 kB
·
Xet hash:
a16a8b160f1ffed8c9168c9bb440a76d69ea484f62e0a89adc8d382bfd830a0f

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.