Conversation
|
Ready for review. Reviewed by a separate agent; all five findings applied in 550adb9. Two things to decide before merge, not before review:
Unrelated, but easier to change now than later: both stores place the level dimension last in both vertical groups — Review notes: the earlier draft used the November 2022 Buffalo lake-effect event, which is already the centerpiece of |
Colab can mishandle '+' in a notebook path, so use a dash instead. Pure rename: the notebook content is byte-identical and no other file in the repo referenced the old name.
One quickstart covering both
noaa-gfs-forecast-virtualandnoaa-gfs-analysis-virtual, following the two-dataset shape ofucsb-chc-chirps-analysis.ipynband the AGENTS.md intro/question structure.Temporary direct open
Neither dataset is in the STAC catalog yet, so
dynamical_catalog.open(...)cannot resolve them. Cell 2 is the only deviation: it opens the two Icechunk stores directly with anonymous S3 storage plusauthorize_virtual_chunk_accessfors3://noaa-gfs-bdp-pds/, and opens thepressure_levelgroup there too so no later cell needs it. The cell header comment carries the threedynamical_catalog.open(...)lines that replace it at publish time; everything downstream is unchanged by that swap. The install line staysdynamical-catalog cartopy(icechunk arrives transitively); no new project dependency.The catalog documentation links in the intro point at the expected
https://dynamical.org/catalog/noaa-gfs-{forecast,analysis}-virtual/pages, which do not exist until the STAC publish.What it shows and why
Every example uses something the materialized
noaa-gfs-forecast/noaa-gfs-analysis(25 variables each) do not carry, and none reuses their events or those of the HRRR virtual quickstarts (Idalia, Mumbai monsoon, Feb 2024 atmospheric river, Shanghai; Buffalo Nov 2022, Dec 2022 arctic front, June 2023 smoke, Greenfield, Milton, March 2025 outbreak):convective_available_potential_energy_surfacesnow_thickness_surfacewind_gust_surfacepressure_levelwind_uat 10/30/100 hPa, 60°N zonal mean, 12-hourlycomposite_reflectivity, hourly, 37 framesAll reads are bounded to fixed time slices and regions; the whole notebook makes ~600 chunk reads and executes in ~40 s locally.
Facts re-derived from the stores (not taken from the brief)
Read on 2026-09-17 via
xr.open_datatreeonreadonly_session("main"); snapshots forecastSVZ00W5RRRW4Y6PCCVYG, analysis5Q0Z4PQ0620AA2F576C0.convective_precipitation_run_total_surface,total_precipitation_run_total_surface; no analysis-only variables.pressure_level+ 3height_above_mean_sea_level= 274 data variables; dims(init_time: 7864, lead_time: 209, latitude: 721, longitude: 1440); init_time 2021-05-01T00 → 2026-09-17T18 every 6 h; lead 0–384 h, hourly to 120 h then 3-hourly.(time: 47182, latitude: 721, longitude: 1440); time 2021-05-01T00 → 2026-09-17T21 hourly.pressure_level: 57 levels, 1000 → 0.01 hPa.height_above_mean_sea_level: 8 heights, 305–4572 m (note its dims are(time, latitude, longitude, height)— height last).(1, 1, 721, 1440)forecast,(1, 721, 1440)analysis.precipitation_surface.Checks
uv run .internal/run_notebooks.py noaa-gfs-forecast-analysis-virtual.ipynb— 2.7 MB, ~40 suv run .internal/run_notebooks.py --isolated noaa-gfs-forecast-analysis-virtual.ipynb— passes against only the install line's packagesuv run python tests/test_notebook_execution.py noaa-gfs-forecast-analysis-virtual.ipynb— OKuv run python .internal/check_install_lines.py— all 24 install lines coveredpython -m unittest tests/test_notebook_coordinator.py tests/test_notebook_deps.py tests/test_notebook_isolation.py— 12 tests OKThe new notebook lands in CI shard 2 (sorted, stride 3).
🤖 Generated with Claude Code