Skip to content

FAO delivery path is point/DataFrame-based — won't carry rusty_bucket's pooled draws #45

Description

@Polichinel

Problem

The unfao delivery manager (views_postprocessing/unfao/managers/unfao.py) is built around point forecasts:

  • _read_forecast_data (~L62-100) downloads a single parquet DataFrame from Appwrite and wraps it in PGMDataset (pandas).
  • _append_metadata (~L112-122) joins GAUL metadata onto that DataFrame.
  • _save (~L206-223) writes pred_*_best / pred_*_prob point columns.

rusty_bucket (views-models#143) is the opposite by design: a PredictionFrameEnsembleManager + aggregation: concat ensemble that ships the full pooled posterior draws (~1024/cell, Track A y_pred.npy of shape (N, S)) uncollapsed, so the principled MAP/HDI collapse happens once downstream in views_frames_summarize.

So the current FAO delivery path would not carry rusty_bucket's draws — it expects a point DataFrame with _best/_prob columns, not (N, S) draw arrays. This is the downstream half of the views-models#143 contract: "the FAO delivery path must not collapse them."

Scope

  • Adapt the unfao delivery to read/carry the pooled draws (frames / (N, S) arrays + identifiers) for rusty_bucket, delivering them uncollapsed.
  • Keep the metadata enrichment (GaulLookupEnricher) and validation working on the frames/draws path.
  • Decide the delivery artifact to FAO (raw draws vs the views_frames_summarize collapse output).

Not blocking yet

rusty_bucket's constituent models are still being tuned (views-models#143), so this is track-and-scope. It must land before rusty_bucket goes live.

Refs

  • views-models#143 (rusty_bucket + the downstream draw-preservation contract)
  • views_postprocessing/unfao/managers/unfao.py (_read_forecast_data, _append_metadata, _save)
  • Related: C-40 in the register (the manager's pipeline-core coupling), which any rework here should keep in mind.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions