No description
Stages 4-5 of the HRDPS plan. Lands the Rust forecast-hour pipeline for source='hrdps' grid_tasks rows. What ships: - `hrdps_fetcher.rs` — sibling of fetcher.rs for ECCC's MSC Datamart shape: date-prefixed URLs, one variable per GRIB2 file, concurrent fetch + byte-concat into a single multi-record blob. wgrib2 reads multi-record files natively so the downstream decoder path is unchanged. Mirrors lib/microwaveprop/weather/hrdps_client.ex. - `grid::hrdps_only_points()` + `grid::hrdps_grid_spec()` — Canadian cells (49-60°N, -141 to -52°W) minus the HRRR overlap. Disjoint from conus_points by construction. - `db::TaskSource` enum + `source` column on ClaimedTask. claim_next surfaces source for forecast lane dispatch; claim_next_analysis filters to source='hrrr' only (HRDPS analysis path is not yet ported — would need native-duct + NEXRAD + commercial merges that Rust doesn't have for HRDPS). - `pipeline::run_chain_step_hrdps` — fetch combined blob, decode with HRDPS grid spec, drop HRRR-overlap cells via a HashSet of hrdps_only_points, back-fill DPT from DEPR (HRDPS publishes DEPR as primary), score every band, write `<band>/<iso>.hrdps.prop`. Skips per-valid_time profile + scalar artifacts since those would clobber HRRR's at the same valid_time — surfacing HRDPS on /weather is a separate stage. - worker.rs dispatches forecast lane on (kind, source) — Hrrr → run_chain_step, Hrdps → run_chain_step_hrdps. Analysis stays HRRR-only. Worker constructs an HrdpsClient alongside HrrrClient. - `scores_file::write_atomic_hrdps` writes to `.hrdps.prop` with the Canadian grid spec via the new encode_with_spec. Coexists with the HRRR `.prop` file for the same (band, valid_time). 163 unit tests pass; backfill_dpt_from_depr handles surface and pressure-level levels with no double-fill when DPT exists. |
||
|---|---|---|
| .forgejo/workflows | ||
| .github | ||
| assets | ||
| bin | ||
| config | ||
| docs | ||
| k8s | ||
| lib | ||
| lib_ml | ||
| notebooks | ||
| priv | ||
| rel | ||
| rust/prop_grid_rs | ||
| scripts | ||
| test | ||
| vendor | ||
| .credo.exs | ||
| .dockerignore | ||
| .formatter.exs | ||
| .gitignore | ||
| .tool-versions | ||
| AGENTS.md | ||
| algo.md | ||
| app.json | ||
| bugs.md | ||
| CLAUDE.md | ||
| Dockerfile | ||
| elevation.md | ||
| LICENSE | ||
| mix.exs | ||
| mix.lock | ||
| prediction.md | ||
| README.md | ||
| tail_logs.sh | ||
| updates.md | ||
Microwaveprop
To start your Phoenix server:
- Run
mix setupto install and setup dependencies - Start Phoenix endpoint with
mix phx.serveror inside IEx withiex -S mix phx.server
Now you can visit localhost:4000 from your browser.
Ready to run in production? Please check our deployment guides.
Learn more
- Official website: https://www.phoenixframework.org/
- Guides: https://hexdocs.pm/phoenix/overview.html
- Docs: https://hexdocs.pm/phoenix
- Forum: https://elixirforum.com/c/phoenix-forum
- Source: https://github.com/phoenixframework/phoenix