Skip to content

feat: derive the baseline diet from FBS by default, make GDD-IA optional#20

Merged
koen-vg merged 1 commit into
Sustainable-Solutions-Lab:mainfrom
koen-vg:fbs-baseline-diet
Jul 2, 2026
Merged

feat: derive the baseline diet from FBS by default, make GDD-IA optional#20
koen-vg merged 1 commit into
Sustainable-Solutions-Lab:mainfrom
koen-vg:fbs-baseline-diet

Conversation

@koen-vg

@koen-vg koen-vg commented Jul 2, 2026

Copy link
Copy Markdown
Member

The GDD-IA dietary dataset is not yet public, so a default GLADE setup could not run without requesting data from its author. Add an FBS-derived baseline-diet source and make it the default (diet.source: fbs); the GDD-IA pipeline remains available via diet.source: gdd_ia, with its input CSVs required only in that mode (checked early with an actionable error).

The FBS source derives per-(country, food-group) intake from the FBS 'Food supply (kcal/capita/day)' element at model-basis energy densities, corrected for consumer waste. Deriving mass from energy sidesteps per-item mass-basis bookkeeping (flour extraction, refuse fractions, carcass-to-retail, milk equivalents): FAO's nutritive factors already net these out, mirroring the GDD-IA dairy convention. Wheat and rice are the only FBS items spanning grain and whole_grains; diet.fbs.whole_grain_shares splits them, with defaults fit to GDD-IA's global whole-grain intake by population-weighted least squares. The kcal-normalisation step is GDD-IA-only: the FBS diet is FAO-energy-consistent by construction, and the cereal residual fix reconstructs its cereal budget from the group totals when whole_grains is GBD-anchored.

Calibration artefact sets: the default set is refit against the FBS diet (L1 costs land at the previous centre; food_demand multipliers tighten toward 1, e.g. dairy 1.22-1.31 -> ~1.0); the previous GDD-fit default set is preserved as gdd-ia for GDD-IA configs without health; gbd-anchored is unchanged. Provenance snapshots now record diet.source and drop the inactive source's config block.

The GDD-IA path is verified byte-identical on unchanged inputs. Against the GDD-IA diet, the FBS-derived diet correlates at r = 0.7-0.96 for most food groups with a ~+10% energy bias (the known supply-vs-survey gap); FBS-override foods are identical by construction. The largest definitional gap is whole grains, where GDD-IA counts decorticated millet/sorghum as processed grain while the food taxonomy classes them as whole_grains; aligning the GDD-IA ingestion to the taxonomy is left as a follow-up.

…IA optional

The GDD-IA dietary dataset is not yet public, so a default GLADE setup
could not run without requesting data from its author. Add an
FBS-derived baseline-diet source and make it the default (diet.source:
fbs); the GDD-IA pipeline remains available via diet.source: gdd_ia,
with its input CSVs required only in that mode (checked early with an
actionable error).

The FBS source derives per-(country, food-group) intake from the FBS
'Food supply (kcal/capita/day)' element at model-basis energy densities,
corrected for consumer waste. Deriving mass from energy sidesteps
per-item mass-basis bookkeeping (flour extraction, refuse fractions,
carcass-to-retail, milk equivalents): FAO's nutritive factors already
net these out, mirroring the GDD-IA dairy convention. Wheat and rice are
the only FBS items spanning grain and whole_grains;
diet.fbs.whole_grain_shares splits them, with defaults fit to GDD-IA's
global whole-grain intake by population-weighted least squares. The
kcal-normalisation step is GDD-IA-only: the FBS diet is
FAO-energy-consistent by construction, and the cereal residual fix
reconstructs its cereal budget from the group totals when whole_grains
is GBD-anchored.

Calibration artefact sets: the default set is refit against the FBS
diet (L1 costs land at the previous centre; food_demand multipliers
tighten toward 1, e.g. dairy 1.22-1.31 -> ~1.0); the previous GDD-fit
default set is preserved as gdd-ia for GDD-IA configs without health;
gbd-anchored is unchanged. Provenance snapshots now record diet.source
and drop the inactive source's config block.

The GDD-IA path is verified byte-identical on unchanged inputs. Against
the GDD-IA diet, the FBS-derived diet correlates at r = 0.7-0.96 for
most food groups with a ~+10% energy bias (the known supply-vs-survey
gap); FBS-override foods are identical by construction. The largest
definitional gap is whole grains, where GDD-IA counts decorticated
millet/sorghum as processed grain while the food taxonomy classes them
as whole_grains; aligning the GDD-IA ingestion to the taxonomy is left
as a follow-up.
@koen-vg koen-vg merged commit 08a68ec into Sustainable-Solutions-Lab:main Jul 2, 2026
4 checks passed
@koen-vg koen-vg deleted the fbs-baseline-diet branch July 2, 2026 18:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant