diff --git a/.claude/skills/model-calibration/SKILL.md b/.claude/skills/model-calibration/SKILL.md index cd34ca5c..f39f99e1 100644 --- a/.claude/skills/model-calibration/SKILL.md +++ b/.claude/skills/model-calibration/SKILL.md @@ -299,6 +299,14 @@ historical centre once the chain absorbs its gaps cleanly. a lower triangle (feed disables the other four, food_waste the last three, and so on); preserve it when adding a calibration. + The trap is that a step need not *enable* a successor's calibration to + depend on it -- inheriting `l1_cost: "calibrated"` from `default.yaml` is + enough. feed/food_waste/food_demand therefore set + `deviation_penalty.enabled: false` (production is pinned to actuals, so the + penalty has nothing to act on) and cost drives stability through hard + bounds. When adding a calibrated key to `default.yaml`, check what the + earlier step configs inherit. + - **Step configs must not override structural model keys.** Anything a step config pins that isn't calibration machinery, the validation regime, or a solver budget silently defeats the point of a per-base diff --git a/CHANGELOG.md b/CHANGELOG.md index 146f619f..f199c487 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -261,6 +261,16 @@ introduce breaking changes to configuration and outputs. ### Fixed +- The feed, food_waste, food_demand and cost calibration steps no longer depend + on the calibrated deviation penalty, which the stability step produces at the + end of the chain. The first three pin production to actuals, so the penalty + had nothing to act on; the cost step drives production stability through hard + bounds, which never read the calibrated L1 costs. Regenerating the artefact + sets confirms the dependency was inert: every artefact is unchanged. The + calibration chain is a strict forward pass again, and + `tools/calibrate --check` settles after a full run instead of reporting the + first four steps stale. + - Workflow startup no longer builds a full copy of the configuration for every configured scenario when deciding whether health data is needed. On configs with generated scenario ensembles this dominated DAG construction: for diff --git a/config/calibration/feed.yaml b/config/calibration/feed.yaml index a742705d..497c5021 100644 --- a/config/calibration/feed.yaml +++ b/config/calibration/feed.yaml @@ -69,6 +69,12 @@ food_demand_calibration: food_loss_waste_calibration: enabled: false +# Production is pinned to actuals here, so the deviation penalty has nothing +# to act on. Leaving it enabled would make this step read the calibrated L1 +# costs, which the stability step produces at the end of the chain. +deviation_penalty: + enabled: false + grazing: grassland_forage_calibration: enabled: false # Don't apply calibration (we're generating it) diff --git a/config/calibration/food_demand.yaml b/config/calibration/food_demand.yaml index 9596a219..588341ad 100644 --- a/config/calibration/food_demand.yaml +++ b/config/calibration/food_demand.yaml @@ -66,6 +66,12 @@ food_utility_piecewise: cost_calibration: enabled: false +# Production is pinned to actuals here, so the deviation penalty has nothing +# to act on. Leaving it enabled would make this step read the calibrated L1 +# costs, which the stability step produces at the end of the chain. +deviation_penalty: + enabled: false + food_demand_calibration: enabled: false # Don't apply calibration (we're generating it) generate: true # Generate calibration from solved model diff --git a/config/calibration/food_waste.yaml b/config/calibration/food_waste.yaml index 82c4e52d..136754db 100644 --- a/config/calibration/food_waste.yaml +++ b/config/calibration/food_waste.yaml @@ -57,6 +57,12 @@ food_utility_piecewise: cost_calibration: enabled: false +# Production is pinned to actuals here, so the deviation penalty has nothing +# to act on. Leaving it enabled would make this step read the calibrated L1 +# costs, which the stability step produces at the end of the chain. +deviation_penalty: + enabled: false + # food_demand calibration depends on food_loss_waste.csv, which is built # from this step's output. Disable to break the cycle: food_waste's slack # must reflect the gap *without* the demand multiplier applied (the diff --git a/data/curated/calibration/default/deviation_penalty.yaml b/data/curated/calibration/default/deviation_penalty.yaml index 5c94f67c..eb350c7e 100644 --- a/data/curated/calibration/default/deviation_penalty.yaml +++ b/data/curated/calibration/default/deviation_penalty.yaml @@ -17,6 +17,6 @@ l1_costs: cropland: 1.4406072051746193 grassland: 0.23976429357967677 feed: 0.06151640376563935 -iterations: 1 +iterations: 0 converged: true final_residual_log_inf: 0.019950027731896344 diff --git a/data/curated/calibration/default/fingerprint.yaml b/data/curated/calibration/default/fingerprint.yaml index 57bc6f88..bb5f4925 100644 --- a/data/curated/calibration/default/fingerprint.yaml +++ b/data/curated/calibration/default/fingerprint.yaml @@ -12,11 +12,11 @@ steps: code: workflow/rules/animals.smk: fa07f649a53263c151e1799f63b40c66fba42ee7858a97d51ff988c406ba0024 workflow/rules/consumer_values.smk: 4f3fb2650b690a41b45443b322745b698910abae3cb013f70e0eea8e54ba6290 - workflow/rules/crops.smk: 6413ed1571fe2db7bbac9d45db8a27d51a1c2955a86b4629f43cf70da1a048b0 + workflow/rules/crops.smk: 8d7d87b61959819ae9a753126767a71a10d7463af7963bffd423fa4560f470d1 workflow/rules/diet.smk: 15db54cf636dca37bea0343c2bb236ead24ffe238dc2a843b391bbd43bfacb12 workflow/rules/geography.smk: 54b113f5647787bacea8d2a2f45298a24c605a84ced48630abece8b2dc887943 workflow/rules/luc.smk: e64fb669c0d6c40299d47c995dbb9f04a71f4d99d8edcd1fe9ce3ed700639257 - workflow/rules/model.smk: 0e52481f84031711f0706a8c54a7e1038063e24320e52609a1fd832a977aaffd + workflow/rules/model.smk: 3a0e06937f52f250e4a5a60c8805f222ff9ad1563a125d839c53c962a847e7bb workflow/rules/retrieve.smk: ecd9eb633974cd575b7a879348c763f844b3f66cdedc785c7d28977ac541a577 workflow/rules/water.smk: 9fe3fc69051df02bab7dde53d2057b2b64142c7212741f8a45bc0171447c951d workflow/scripts/aggregate_class_areas.py: 93e9a52eec4dac86eeff03fa7e574ad4bdd91bb4049f715a321850f327aba92e @@ -28,7 +28,7 @@ steps: workflow/scripts/build_fdd_area_shares.py: b6e084b1779636547c41dada16d570ec0f98d5dc34f3d4e948e6e3943e32034a workflow/scripts/build_feed_to_animal_products.py: 1eb41eaf6149524bd6c324ba39356ee09cbebe62bd97bf2e7e4520e1b14e3ba3 workflow/scripts/build_fodder_yield_corrections.py: eef62e7237a89f1f8b962893ed031758fd6abcc1b1c71140bc0c16e92e3fc568 - workflow/scripts/build_frt_area_attribution.py: f91f51757808594f87d6a3151fd228b453181586bd342930b9749a4c21973bc8 + workflow/scripts/build_frt_area_attribution.py: 9e85a1c3352270e6463212d24ecff579e5e8378c7969a22823dd5e59b16b422b workflow/scripts/build_grassland_yields.py: 38ed635e8e162d59f33fa15ba0c649046a047ae37136203de3db2fc72b135a2d workflow/scripts/build_grazing_only_land.py: 9880aea4ffe4886ba68fdbc283b009ea984cbb0fb3159754c721b02beb3eec99 workflow/scripts/build_harvested_area.py: b6abc0557ed3c68948380d920ec77102f35e47b4712f4701a40677d15c972a98 @@ -37,16 +37,16 @@ steps: workflow/scripts/build_luc_grid.py: d8a8af444d2267b1dab55f6719bf3ade019a6410e15ed3b7888cb76d7c7061d6 workflow/scripts/build_luicube_grassland_yields.py: 01d2865e3c1878fc4795075680197b161f4cb50259a2fb7f8cdcb1e3deaf2191 workflow/scripts/build_mirca_crop_calendar.py: f44617c319c76f4e1f3d68f6d2dee14866804e498d478797e2d63612d9515e4e - workflow/scripts/build_model.py: 3294bfeb27cefb28ad3406f3fc40ff05400ddc6746f9944742d16c6a97c2b16d + workflow/scripts/build_model.py: 2d814e24e2cdd28365f44b6eea31f259ea42cea90bbf58579b4bd624a2cbd4e9 workflow/scripts/build_multi_cropping.py: 6130469e316fb795e66d87fc3f9af6b8086878abba8dfe31c9b587c87478cc21 workflow/scripts/build_ooc_olive_area_share.py: 3c5d202eabc9cd997d3dc4989e9e86e672230ce2d139cc7d96a3f5ccf459bbd5 workflow/scripts/build_reforestation_mask.py: c373bb1564782ff1400d5fd717a87e67501241c5a9e09b644ea0e199a82aefa1 workflow/scripts/build_region_class_cell_mapping.py: c8a2971f2cd7d3d46107f7c6af1a1d8bc22eacec1cca80a6a58ec04da508ad74 workflow/scripts/build_region_water_aware.py: 9d6a8e8f1bf23d51d52d802c905c6460539874505546cec68d32f08a00ec2be1 - workflow/scripts/build_region_watergap.py: 93451ae9ac67fac05fe205ca5009d0854f29012893997ed50db919ddb29ed5c5 + workflow/scripts/build_region_watergap.py: 93024ff5d92eb74703d67f1216fd8b3f5a1f4721ae010f1d148c72036e93a4ea workflow/scripts/build_regions.py: 08a1f3c0247bdbe4600f2b1596396a352ff6c459496566e7e24da5b2f83558a7 workflow/scripts/build_yield_calibration.py: 1225a0d55add24ce44acc86cde5dd3335ed9d0a233ba6025bfc8c0e5afc8375d - workflow/scripts/calculate_manure_emissions.py: c35ee707e5cfda0bc1cd0aa06f31c834f118b914b47dc6478a37222f10589f94 + workflow/scripts/calculate_manure_emissions.py: 4f39f5370dcf931d4648bf7c0727a807ec7bc8fbb80561dae4ff5afa08834591 workflow/scripts/calibrate_food_utility_blocks.py: e20676cd1b44c4504df3c9856131fa234088b1fd77c9f242144483f6f58ad330 workflow/scripts/categorize_feeds.py: 575b37f430e4fbf54b8477be96f5069ce6522fa1882c2f024b9b9a25a8540140 workflow/scripts/compose_water_supply.py: c1fc61844079219f2381664b44b6a917f51ecbc07bb08e1318702985deaf9231 @@ -60,7 +60,7 @@ steps: workflow/scripts/download_luicube_raster.py: 7883a5a73c9c18f6afbbabe62044494657e69b49469ae7c97b4df18f8a584b2c workflow/scripts/download_mirca_os_bag_member.py: e869f4ec2f87a03b65d7c6f875d6ad393dcce647789ba7fc0f1c2d2fa2e48049 workflow/scripts/download_soilgrids_ocs.py: bcb361c0ada72cd6264685eb36b2efabc1a03bc25c93918c37da8da7fe049d58 - workflow/scripts/estimate_baseline_diet.py: 87047e7cb0db1f5ab7460eeecfacea52c7ef36802669e0aff5b8c62079e589e9 + workflow/scripts/estimate_baseline_diet.py: d9df39a6cc46b41da12059f5c38929a62e4b53301149488f89ce704cb5440336 workflow/scripts/extract_consumer_values.py: eba7d4bd3d10632fc5fbcbc46f65acd5775f2bb74ca3aa3f5d6ff15113c3dd97 workflow/scripts/extract_cost_calibration.py: f7475beca73108a5f6ef63f1c284625e996abc9dadf9efc981c92e2f259d3f23 workflow/scripts/extract_mirca_os_archive.py: 687fe1d413ea063d585cc526ff53ce7d91c1df90e1d1ec898bfc62d19890647c @@ -70,7 +70,7 @@ steps: workflow/scripts/prepare_banana_plantain_production.py: 214cd243b0932ee9da96cf24bdd8c7c10e05c94e27c303758cc2770e0d166e3a workflow/scripts/prepare_biofuel_baseline.py: de7fa63ca68961a1334e74af63b6e23a1360fcf810fa3a815e901e89cc8710ce workflow/scripts/prepare_fao_edible_portion.py: cb71097d23dbe14d077c2a74fbd28bd13fcf039529979cd1af64db2c184a5c0e - workflow/scripts/prepare_faostat_animal_production.py: d163e7bfb272e9b542f16dcc11ebfffae4476fbe08f9bbfcb64479b2d869ac06 + workflow/scripts/prepare_faostat_animal_production.py: 38980d9bf9324ae01664c63104026aa4b3589f71f5bc592ae8f3bbe96cde9c2a workflow/scripts/prepare_faostat_crop_costs.py: be66f2aad20af7c88085b3c24e59ce2e26cfcee25b202fd96f3a47666d65ad1b workflow/scripts/prepare_faostat_crop_production.py: f446a0f22d865d6dfb7aaab643ea245932169769070b7a72ab16c98b09bf7435 workflow/scripts/prepare_faostat_fbs_items.py: 87446f863e0e26e06b863cabcaafda362fb033f86b522b519922f86b5f80bb05 @@ -110,7 +110,6 @@ steps: data/bundled/gleam3/production.csv: eb85e82ba9a61c71c6cd33ab36c00b5d844f2550e1caa45b6b250410adc6f2b5 data/curated/M49-codes.csv: 10ae52e639e62f07ce992ead08536167d0c8aa9f467870dbfcfbf465ef3aa9be data/curated/biogas_crop_demand.csv: 8371d2ef0d3170f4ee145b0b0fd7a1ab4e63eec87febb78ca5574866b58cff71 - data/curated/calibration/default/deviation_penalty.yaml: a20304c2ecfc7d1109d43aaded46fd650bdc5524f43e6d6365b56fc225faeca0 data/curated/calibration/default/exogenous_feed.csv: 3ebcac7797beb398a9ff227f700cab0f1e01fef27d361696d1c2b05c274cb39d data/curated/calibration/default/exogenous_forage.csv: d806b2e98968a5d0e3b8618d3882152102f11e4ce62a4de233b8560e7e1aeccc data/curated/calibration/default/fodder_conversion.csv: f46d89574830cefba376f9fdb86c0ae4462bdaf9889dcc25d8c15b0da1524458 @@ -156,19 +155,29 @@ steps: data/curated/usda_animal_cost_sources.csv: 7a27f0ad2e7dc08a10e3264e9aefc7ebfaa1ea360e3b198cb368738d995faf6a data/curated/wirsenius_feed_energy_requirements.csv: f6961ea48f00dcd793d0b61d2939c907fe87b03ab5f28f643073252a8306455c data/curated/yield_unit_conversions.csv: c1905886711b3b079bfd2761029070b874efd72f16ea5aac1f708e24d42d089f + workflow/scripts/build_model/__init__.py: 79735b7695e60ebf84e52bd91374505a357e4492f2bf80936bb00f76ffc4a7f7 workflow/scripts/build_model/animals.py: 030c2dd4b459fb856e7dc34c9dd74fe9245a340eca9055b19a6d6bf01a910f29 - workflow/scripts/build_model/biomass.py: 78059ea9d2fb953c5890dfb789b4215373a095a087d3e888cff1fa75d04e034f + workflow/scripts/build_model/biomass.py: 39bdbf6eb4d76e95cf9ce1a31a77c2b1382c1cb63dc728d5ac6f416393520f38 + workflow/scripts/build_model/commodity_costs.py: 97a4c3aa148355adac88d7a45462158f55a7322a0c351babd0a243bd941eb0e2 workflow/scripts/build_model/crops.py: 4b8638d8902b0a688d0ab55df3e3625d0953f3b4ac63886ddae50b3bf47b4610 workflow/scripts/build_model/food.py: 9e53b6c847202a2192ea0e014746e62a9a5f88eedffc5a48833fc4186ef65ae9 - workflow/scripts/build_model/grassland.py: c3ee3ae3149137e8ab427f0b5584251b9c49baac821e92f318cca816df171f48 + workflow/scripts/build_model/grassland.py: bf39536ad916a0c7a47d72fe2de4171fd256e483b81ac552d4403fe0123036da workflow/scripts/build_model/health.py: 5ddc8cbae98992f67140db787946a0f9fd9ae15ad683592b4f81b4bf6a2df702 workflow/scripts/build_model/infrastructure.py: b792d568d0f199699f5d53bc6f175138a899e41a71f86b5d72a037de1130785c - workflow/scripts/build_model/land.py: 160b8d97dfaaadcaeef4bc8efa3ebcd55ea8ad0aaf9469cc1387b4b0687f4422 + workflow/scripts/build_model/irrigation.py: 3d1d6216069eb7854046266a68b202b1f4c981395c499f8d05ab04c22f5645c2 + workflow/scripts/build_model/land.py: 8b1958b5791ec671df4621d873b2476d7aee69f3418b6c601b1036bdde87d11b workflow/scripts/build_model/nutrition.py: e94986ded9c4569cc1f3b264c352a1f7f7f72d0c3b107f2aed2ad5f44e1b875c workflow/scripts/build_model/primary_resources.py: 133c60f613ad9d758063511607d068a9e7fba04a726cc9fb714e83d9b6ae882c - workflow/scripts/build_model/trade.py: 0fa403447f9f3013fb9efd35f48b7d33044d9a5abca1bc2fe2c05460f077992a + workflow/scripts/build_model/trade.py: ef2649814994573c476eb02258b8d20b8393a5e9087906360c74cfa1412904a5 workflow/scripts/build_model/utils.py: 46fee1344183d1d2fa798b0d92ac63f3aba5989c462d0b92946bf8a83fcbee43 workflow/scripts/constants.py: ab1f55cfb14ae63171047643c634101962abdeab3b410624ad47570871268296 + workflow/scripts/solve_model/__init__.py: 23fb1fde8c5d964c8fda94020ff41ce9fdeefd04f6334a1ab3e7e755c93af04c + workflow/scripts/solve_model/core.py: 71cd673487e6475fa128fdd448e1a251d89ee1ebfc4b882f021a447acb71fd74 + workflow/scripts/solve_model/diet_stability.py: 38186fe2e56474736d9da727cd6ebb3420dd24a432391cc5da477015be0b54f4 + workflow/scripts/solve_model/food_utility.py: c12ac00a859e76d7dffa77c62fc5cb58525d92f6b886373ab49c9790692ac6a4 + workflow/scripts/solve_model/health.py: 216ff58962d5ead53b68f941c79adad79b91f60d5581e2f001e6e0850905995d + workflow/scripts/solve_model/production_stability.py: 4f238ab0f219335272a4146b118066124bf9d107dae5cc3dfe7ce89d5feabf3a + workflow/scripts/solve_model/sensitivity.py: 3ba13e457cfe34ce5ecb04c28d19d873ea6a9d4cc3c2118c3a2c4384a5bbee2a missing_inputs: [] feed: artefacts: @@ -178,11 +187,11 @@ steps: data/curated/calibration/default/grassland_yield.csv: 7e2c656be823646dd9325400e3c7612388b2ff336cdaa9fbcd7831553f05eb79 code: workflow/rules/animals.smk: fa07f649a53263c151e1799f63b40c66fba42ee7858a97d51ff988c406ba0024 - workflow/rules/crops.smk: 6413ed1571fe2db7bbac9d45db8a27d51a1c2955a86b4629f43cf70da1a048b0 + workflow/rules/crops.smk: 8d7d87b61959819ae9a753126767a71a10d7463af7963bffd423fa4560f470d1 workflow/rules/diet.smk: 15db54cf636dca37bea0343c2bb236ead24ffe238dc2a843b391bbd43bfacb12 workflow/rules/geography.smk: 54b113f5647787bacea8d2a2f45298a24c605a84ced48630abece8b2dc887943 workflow/rules/luc.smk: e64fb669c0d6c40299d47c995dbb9f04a71f4d99d8edcd1fe9ce3ed700639257 - workflow/rules/model.smk: 0e52481f84031711f0706a8c54a7e1038063e24320e52609a1fd832a977aaffd + workflow/rules/model.smk: 3a0e06937f52f250e4a5a60c8805f222ff9ad1563a125d839c53c962a847e7bb workflow/rules/retrieve.smk: ecd9eb633974cd575b7a879348c763f844b3f66cdedc785c7d28977ac541a577 workflow/rules/water.smk: 9fe3fc69051df02bab7dde53d2057b2b64142c7212741f8a45bc0171447c951d workflow/scripts/aggregate_class_areas.py: 93e9a52eec4dac86eeff03fa7e574ad4bdd91bb4049f715a321850f327aba92e @@ -194,7 +203,7 @@ steps: workflow/scripts/build_fdd_area_shares.py: b6e084b1779636547c41dada16d570ec0f98d5dc34f3d4e948e6e3943e32034a workflow/scripts/build_feed_to_animal_products.py: 1eb41eaf6149524bd6c324ba39356ee09cbebe62bd97bf2e7e4520e1b14e3ba3 workflow/scripts/build_fodder_yield_corrections.py: eef62e7237a89f1f8b962893ed031758fd6abcc1b1c71140bc0c16e92e3fc568 - workflow/scripts/build_frt_area_attribution.py: f91f51757808594f87d6a3151fd228b453181586bd342930b9749a4c21973bc8 + workflow/scripts/build_frt_area_attribution.py: 9e85a1c3352270e6463212d24ecff579e5e8378c7969a22823dd5e59b16b422b workflow/scripts/build_grassland_yields.py: 38ed635e8e162d59f33fa15ba0c649046a047ae37136203de3db2fc72b135a2d workflow/scripts/build_grazing_only_land.py: 9880aea4ffe4886ba68fdbc283b009ea984cbb0fb3159754c721b02beb3eec99 workflow/scripts/build_harvested_area.py: b6abc0557ed3c68948380d920ec77102f35e47b4712f4701a40677d15c972a98 @@ -203,16 +212,16 @@ steps: workflow/scripts/build_luc_grid.py: d8a8af444d2267b1dab55f6719bf3ade019a6410e15ed3b7888cb76d7c7061d6 workflow/scripts/build_luicube_grassland_yields.py: 01d2865e3c1878fc4795075680197b161f4cb50259a2fb7f8cdcb1e3deaf2191 workflow/scripts/build_mirca_crop_calendar.py: f44617c319c76f4e1f3d68f6d2dee14866804e498d478797e2d63612d9515e4e - workflow/scripts/build_model.py: 3294bfeb27cefb28ad3406f3fc40ff05400ddc6746f9944742d16c6a97c2b16d + workflow/scripts/build_model.py: 2d814e24e2cdd28365f44b6eea31f259ea42cea90bbf58579b4bd624a2cbd4e9 workflow/scripts/build_multi_cropping.py: 6130469e316fb795e66d87fc3f9af6b8086878abba8dfe31c9b587c87478cc21 workflow/scripts/build_ooc_olive_area_share.py: 3c5d202eabc9cd997d3dc4989e9e86e672230ce2d139cc7d96a3f5ccf459bbd5 workflow/scripts/build_reforestation_mask.py: c373bb1564782ff1400d5fd717a87e67501241c5a9e09b644ea0e199a82aefa1 workflow/scripts/build_region_class_cell_mapping.py: c8a2971f2cd7d3d46107f7c6af1a1d8bc22eacec1cca80a6a58ec04da508ad74 workflow/scripts/build_region_water_aware.py: 9d6a8e8f1bf23d51d52d802c905c6460539874505546cec68d32f08a00ec2be1 - workflow/scripts/build_region_watergap.py: 93451ae9ac67fac05fe205ca5009d0854f29012893997ed50db919ddb29ed5c5 + workflow/scripts/build_region_watergap.py: 93024ff5d92eb74703d67f1216fd8b3f5a1f4721ae010f1d148c72036e93a4ea workflow/scripts/build_regions.py: 08a1f3c0247bdbe4600f2b1596396a352ff6c459496566e7e24da5b2f83558a7 workflow/scripts/build_yield_calibration.py: 1225a0d55add24ce44acc86cde5dd3335ed9d0a233ba6025bfc8c0e5afc8375d - workflow/scripts/calculate_manure_emissions.py: c35ee707e5cfda0bc1cd0aa06f31c834f118b914b47dc6478a37222f10589f94 + workflow/scripts/calculate_manure_emissions.py: 4f39f5370dcf931d4648bf7c0727a807ec7bc8fbb80561dae4ff5afa08834591 workflow/scripts/categorize_feeds.py: 575b37f430e4fbf54b8477be96f5069ce6522fa1882c2f024b9b9a25a8540140 workflow/scripts/compose_water_supply.py: c1fc61844079219f2381664b44b6a917f51ecbc07bb08e1318702985deaf9231 workflow/scripts/compute_exogenous_feed_calibration.py: e72a80a835bbf1cca799f46e861ceef67c0e03a2fdaebc4ded10d31b55d4a5bd @@ -227,7 +236,7 @@ steps: workflow/scripts/download_luicube_raster.py: 7883a5a73c9c18f6afbbabe62044494657e69b49469ae7c97b4df18f8a584b2c workflow/scripts/download_mirca_os_bag_member.py: e869f4ec2f87a03b65d7c6f875d6ad393dcce647789ba7fc0f1c2d2fa2e48049 workflow/scripts/download_soilgrids_ocs.py: bcb361c0ada72cd6264685eb36b2efabc1a03bc25c93918c37da8da7fe049d58 - workflow/scripts/estimate_baseline_diet.py: 87047e7cb0db1f5ab7460eeecfacea52c7ef36802669e0aff5b8c62079e589e9 + workflow/scripts/estimate_baseline_diet.py: d9df39a6cc46b41da12059f5c38929a62e4b53301149488f89ce704cb5440336 workflow/scripts/extract_mirca_os_archive.py: 687fe1d413ea063d585cc526ff53ce7d91c1df90e1d1ec898bfc62d19890647c workflow/scripts/merge_animal_costs.py: db83828da2fad888f0bae49e3a4d19ebc8315e27d2edcd0c6fde579b736de57c workflow/scripts/merge_dietary_sources.py: b647708a56e5d7c9359f78c644020e3b67e37f50d699004fc8462ed5700031a4 @@ -235,7 +244,7 @@ steps: workflow/scripts/prepare_banana_plantain_production.py: 214cd243b0932ee9da96cf24bdd8c7c10e05c94e27c303758cc2770e0d166e3a workflow/scripts/prepare_biofuel_baseline.py: de7fa63ca68961a1334e74af63b6e23a1360fcf810fa3a815e901e89cc8710ce workflow/scripts/prepare_fao_edible_portion.py: cb71097d23dbe14d077c2a74fbd28bd13fcf039529979cd1af64db2c184a5c0e - workflow/scripts/prepare_faostat_animal_production.py: d163e7bfb272e9b542f16dcc11ebfffae4476fbe08f9bbfcb64479b2d869ac06 + workflow/scripts/prepare_faostat_animal_production.py: 38980d9bf9324ae01664c63104026aa4b3589f71f5bc592ae8f3bbe96cde9c2a workflow/scripts/prepare_faostat_crop_costs.py: be66f2aad20af7c88085b3c24e59ce2e26cfcee25b202fd96f3a47666d65ad1b workflow/scripts/prepare_faostat_crop_production.py: f446a0f22d865d6dfb7aaab643ea245932169769070b7a72ab16c98b09bf7435 workflow/scripts/prepare_faostat_fbs_items.py: 87446f863e0e26e06b863cabcaafda362fb033f86b522b519922f86b5f80bb05 @@ -266,7 +275,7 @@ steps: workflow/scripts/solve_model.py: 8b13b5a820ba69e4385dcc0b4f576744d9759485a642ca43282c7b65861fe5cb workflow/scripts/validate_baseline_diet.py: 6d54d506a2d8382321c849d77698098429019e0f089f969c43ee2848becc05f4 config_files: - config/calibration/feed.yaml: dc76da31efdef7eb308b665b728b847c756883b1a3d478721baacfa3ffe64488 + config/calibration/feed.yaml: e89dbae29b5006642970dd73044e8c1278c6c7cc434118128fe0782cdead31f2 inputs: data/bundled/doi_10_5061_dryad_2rbnzs7qh__v20250311/FUBC_1_to_9_data.csv: 3b5dc29b6e2f6844807f2983c1596c28a127f48a67f7deec7e36f6a49c0b17f3 data/bundled/gleam3/feed_items_categories.xlsx: b2f5f6a8dd86648c6b1a34100dfb6531aacc1c65865d2e8c4eac3a384776de9a @@ -275,7 +284,6 @@ steps: data/bundled/gleam3/production.csv: eb85e82ba9a61c71c6cd33ab36c00b5d844f2550e1caa45b6b250410adc6f2b5 data/curated/M49-codes.csv: 10ae52e639e62f07ce992ead08536167d0c8aa9f467870dbfcfbf465ef3aa9be data/curated/biogas_crop_demand.csv: 8371d2ef0d3170f4ee145b0b0fd7a1ab4e63eec87febb78ca5574866b58cff71 - data/curated/calibration/default/deviation_penalty.yaml: a20304c2ecfc7d1109d43aaded46fd650bdc5524f43e6d6365b56fc225faeca0 data/curated/country_mottet_region.csv: 8c41e8d0a8ad7ec8cd89b9c9cdbb72b6870fb8e9b59dd6ba6e49be468c5651a3 data/curated/country_wirsenius_region.csv: 73ae37e68c61286b0312b04b0d1dbc661322d8be5c5e5e66754fff1c9dcfac6e data/curated/crop_moisture_content.csv: b9e6ac4455fdbb6c28f211a291d2cde59439b7e2215d987e104544cc9eeebfe7 @@ -315,30 +323,40 @@ steps: data/curated/usda_animal_cost_sources.csv: 7a27f0ad2e7dc08a10e3264e9aefc7ebfaa1ea360e3b198cb368738d995faf6a data/curated/wirsenius_feed_energy_requirements.csv: f6961ea48f00dcd793d0b61d2939c907fe87b03ab5f28f643073252a8306455c data/curated/yield_unit_conversions.csv: c1905886711b3b079bfd2761029070b874efd72f16ea5aac1f708e24d42d089f + workflow/scripts/build_model/__init__.py: 79735b7695e60ebf84e52bd91374505a357e4492f2bf80936bb00f76ffc4a7f7 workflow/scripts/build_model/animals.py: 030c2dd4b459fb856e7dc34c9dd74fe9245a340eca9055b19a6d6bf01a910f29 - workflow/scripts/build_model/biomass.py: 78059ea9d2fb953c5890dfb789b4215373a095a087d3e888cff1fa75d04e034f + workflow/scripts/build_model/biomass.py: 39bdbf6eb4d76e95cf9ce1a31a77c2b1382c1cb63dc728d5ac6f416393520f38 + workflow/scripts/build_model/commodity_costs.py: 97a4c3aa148355adac88d7a45462158f55a7322a0c351babd0a243bd941eb0e2 workflow/scripts/build_model/crops.py: 4b8638d8902b0a688d0ab55df3e3625d0953f3b4ac63886ddae50b3bf47b4610 workflow/scripts/build_model/food.py: 9e53b6c847202a2192ea0e014746e62a9a5f88eedffc5a48833fc4186ef65ae9 - workflow/scripts/build_model/grassland.py: c3ee3ae3149137e8ab427f0b5584251b9c49baac821e92f318cca816df171f48 + workflow/scripts/build_model/grassland.py: bf39536ad916a0c7a47d72fe2de4171fd256e483b81ac552d4403fe0123036da workflow/scripts/build_model/health.py: 5ddc8cbae98992f67140db787946a0f9fd9ae15ad683592b4f81b4bf6a2df702 workflow/scripts/build_model/infrastructure.py: b792d568d0f199699f5d53bc6f175138a899e41a71f86b5d72a037de1130785c - workflow/scripts/build_model/land.py: 160b8d97dfaaadcaeef4bc8efa3ebcd55ea8ad0aaf9469cc1387b4b0687f4422 + workflow/scripts/build_model/irrigation.py: 3d1d6216069eb7854046266a68b202b1f4c981395c499f8d05ab04c22f5645c2 + workflow/scripts/build_model/land.py: 8b1958b5791ec671df4621d873b2476d7aee69f3418b6c601b1036bdde87d11b workflow/scripts/build_model/nutrition.py: e94986ded9c4569cc1f3b264c352a1f7f7f72d0c3b107f2aed2ad5f44e1b875c workflow/scripts/build_model/primary_resources.py: 133c60f613ad9d758063511607d068a9e7fba04a726cc9fb714e83d9b6ae882c - workflow/scripts/build_model/trade.py: 0fa403447f9f3013fb9efd35f48b7d33044d9a5abca1bc2fe2c05460f077992a + workflow/scripts/build_model/trade.py: ef2649814994573c476eb02258b8d20b8393a5e9087906360c74cfa1412904a5 workflow/scripts/build_model/utils.py: 46fee1344183d1d2fa798b0d92ac63f3aba5989c462d0b92946bf8a83fcbee43 workflow/scripts/constants.py: ab1f55cfb14ae63171047643c634101962abdeab3b410624ad47570871268296 + workflow/scripts/solve_model/__init__.py: 23fb1fde8c5d964c8fda94020ff41ce9fdeefd04f6334a1ab3e7e755c93af04c + workflow/scripts/solve_model/core.py: 71cd673487e6475fa128fdd448e1a251d89ee1ebfc4b882f021a447acb71fd74 + workflow/scripts/solve_model/diet_stability.py: 38186fe2e56474736d9da727cd6ebb3420dd24a432391cc5da477015be0b54f4 + workflow/scripts/solve_model/food_utility.py: c12ac00a859e76d7dffa77c62fc5cb58525d92f6b886373ab49c9790692ac6a4 + workflow/scripts/solve_model/health.py: 216ff58962d5ead53b68f941c79adad79b91f60d5581e2f001e6e0850905995d + workflow/scripts/solve_model/production_stability.py: 4f238ab0f219335272a4146b118066124bf9d107dae5cc3dfe7ce89d5feabf3a + workflow/scripts/solve_model/sensitivity.py: 3ba13e457cfe34ce5ecb04c28d19d873ea6a9d4cc3c2118c3a2c4384a5bbee2a missing_inputs: [] food_demand: artefacts: data/curated/calibration/default/food_demand.csv: a7cc72a127b566e59057cf2cdc9a8595b79a00dfa0503a29fb55b0afa350c6e5 code: workflow/rules/animals.smk: fa07f649a53263c151e1799f63b40c66fba42ee7858a97d51ff988c406ba0024 - workflow/rules/crops.smk: 6413ed1571fe2db7bbac9d45db8a27d51a1c2955a86b4629f43cf70da1a048b0 + workflow/rules/crops.smk: 8d7d87b61959819ae9a753126767a71a10d7463af7963bffd423fa4560f470d1 workflow/rules/diet.smk: 15db54cf636dca37bea0343c2bb236ead24ffe238dc2a843b391bbd43bfacb12 workflow/rules/geography.smk: 54b113f5647787bacea8d2a2f45298a24c605a84ced48630abece8b2dc887943 workflow/rules/luc.smk: e64fb669c0d6c40299d47c995dbb9f04a71f4d99d8edcd1fe9ce3ed700639257 - workflow/rules/model.smk: 0e52481f84031711f0706a8c54a7e1038063e24320e52609a1fd832a977aaffd + workflow/rules/model.smk: 3a0e06937f52f250e4a5a60c8805f222ff9ad1563a125d839c53c962a847e7bb workflow/rules/retrieve.smk: ecd9eb633974cd575b7a879348c763f844b3f66cdedc785c7d28977ac541a577 workflow/rules/water.smk: 9fe3fc69051df02bab7dde53d2057b2b64142c7212741f8a45bc0171447c951d workflow/scripts/aggregate_class_areas.py: 93e9a52eec4dac86eeff03fa7e574ad4bdd91bb4049f715a321850f327aba92e @@ -350,7 +368,7 @@ steps: workflow/scripts/build_fdd_area_shares.py: b6e084b1779636547c41dada16d570ec0f98d5dc34f3d4e948e6e3943e32034a workflow/scripts/build_feed_to_animal_products.py: 1eb41eaf6149524bd6c324ba39356ee09cbebe62bd97bf2e7e4520e1b14e3ba3 workflow/scripts/build_fodder_yield_corrections.py: eef62e7237a89f1f8b962893ed031758fd6abcc1b1c71140bc0c16e92e3fc568 - workflow/scripts/build_frt_area_attribution.py: f91f51757808594f87d6a3151fd228b453181586bd342930b9749a4c21973bc8 + workflow/scripts/build_frt_area_attribution.py: 9e85a1c3352270e6463212d24ecff579e5e8378c7969a22823dd5e59b16b422b workflow/scripts/build_grassland_yields.py: 38ed635e8e162d59f33fa15ba0c649046a047ae37136203de3db2fc72b135a2d workflow/scripts/build_grazing_only_land.py: 9880aea4ffe4886ba68fdbc283b009ea984cbb0fb3159754c721b02beb3eec99 workflow/scripts/build_harvested_area.py: b6abc0557ed3c68948380d920ec77102f35e47b4712f4701a40677d15c972a98 @@ -359,16 +377,16 @@ steps: workflow/scripts/build_luc_grid.py: d8a8af444d2267b1dab55f6719bf3ade019a6410e15ed3b7888cb76d7c7061d6 workflow/scripts/build_luicube_grassland_yields.py: 01d2865e3c1878fc4795075680197b161f4cb50259a2fb7f8cdcb1e3deaf2191 workflow/scripts/build_mirca_crop_calendar.py: f44617c319c76f4e1f3d68f6d2dee14866804e498d478797e2d63612d9515e4e - workflow/scripts/build_model.py: 3294bfeb27cefb28ad3406f3fc40ff05400ddc6746f9944742d16c6a97c2b16d + workflow/scripts/build_model.py: 2d814e24e2cdd28365f44b6eea31f259ea42cea90bbf58579b4bd624a2cbd4e9 workflow/scripts/build_multi_cropping.py: 6130469e316fb795e66d87fc3f9af6b8086878abba8dfe31c9b587c87478cc21 workflow/scripts/build_ooc_olive_area_share.py: 3c5d202eabc9cd997d3dc4989e9e86e672230ce2d139cc7d96a3f5ccf459bbd5 workflow/scripts/build_reforestation_mask.py: c373bb1564782ff1400d5fd717a87e67501241c5a9e09b644ea0e199a82aefa1 workflow/scripts/build_region_class_cell_mapping.py: c8a2971f2cd7d3d46107f7c6af1a1d8bc22eacec1cca80a6a58ec04da508ad74 workflow/scripts/build_region_water_aware.py: 9d6a8e8f1bf23d51d52d802c905c6460539874505546cec68d32f08a00ec2be1 - workflow/scripts/build_region_watergap.py: 93451ae9ac67fac05fe205ca5009d0854f29012893997ed50db919ddb29ed5c5 + workflow/scripts/build_region_watergap.py: 93024ff5d92eb74703d67f1216fd8b3f5a1f4721ae010f1d148c72036e93a4ea workflow/scripts/build_regions.py: 08a1f3c0247bdbe4600f2b1596396a352ff6c459496566e7e24da5b2f83558a7 workflow/scripts/build_yield_calibration.py: 1225a0d55add24ce44acc86cde5dd3335ed9d0a233ba6025bfc8c0e5afc8375d - workflow/scripts/calculate_manure_emissions.py: c35ee707e5cfda0bc1cd0aa06f31c834f118b914b47dc6478a37222f10589f94 + workflow/scripts/calculate_manure_emissions.py: 4f39f5370dcf931d4648bf7c0727a807ec7bc8fbb80561dae4ff5afa08834591 workflow/scripts/categorize_feeds.py: 575b37f430e4fbf54b8477be96f5069ce6522fa1882c2f024b9b9a25a8540140 workflow/scripts/compose_water_supply.py: c1fc61844079219f2381664b44b6a917f51ecbc07bb08e1318702985deaf9231 workflow/scripts/compute_food_demand_calibration.py: b231f34617c676c5df60abe4c418388b84a3d41acfd78313804489be9017172e @@ -382,7 +400,7 @@ steps: workflow/scripts/download_luicube_raster.py: 7883a5a73c9c18f6afbbabe62044494657e69b49469ae7c97b4df18f8a584b2c workflow/scripts/download_mirca_os_bag_member.py: e869f4ec2f87a03b65d7c6f875d6ad393dcce647789ba7fc0f1c2d2fa2e48049 workflow/scripts/download_soilgrids_ocs.py: bcb361c0ada72cd6264685eb36b2efabc1a03bc25c93918c37da8da7fe049d58 - workflow/scripts/estimate_baseline_diet.py: 87047e7cb0db1f5ab7460eeecfacea52c7ef36802669e0aff5b8c62079e589e9 + workflow/scripts/estimate_baseline_diet.py: d9df39a6cc46b41da12059f5c38929a62e4b53301149488f89ce704cb5440336 workflow/scripts/extract_mirca_os_archive.py: 687fe1d413ea063d585cc526ff53ce7d91c1df90e1d1ec898bfc62d19890647c workflow/scripts/merge_animal_costs.py: db83828da2fad888f0bae49e3a4d19ebc8315e27d2edcd0c6fde579b736de57c workflow/scripts/merge_dietary_sources.py: b647708a56e5d7c9359f78c644020e3b67e37f50d699004fc8462ed5700031a4 @@ -390,7 +408,7 @@ steps: workflow/scripts/prepare_banana_plantain_production.py: 214cd243b0932ee9da96cf24bdd8c7c10e05c94e27c303758cc2770e0d166e3a workflow/scripts/prepare_biofuel_baseline.py: de7fa63ca68961a1334e74af63b6e23a1360fcf810fa3a815e901e89cc8710ce workflow/scripts/prepare_fao_edible_portion.py: cb71097d23dbe14d077c2a74fbd28bd13fcf039529979cd1af64db2c184a5c0e - workflow/scripts/prepare_faostat_animal_production.py: d163e7bfb272e9b542f16dcc11ebfffae4476fbe08f9bbfcb64479b2d869ac06 + workflow/scripts/prepare_faostat_animal_production.py: 38980d9bf9324ae01664c63104026aa4b3589f71f5bc592ae8f3bbe96cde9c2a workflow/scripts/prepare_faostat_crop_costs.py: be66f2aad20af7c88085b3c24e59ce2e26cfcee25b202fd96f3a47666d65ad1b workflow/scripts/prepare_faostat_crop_production.py: f446a0f22d865d6dfb7aaab643ea245932169769070b7a72ab16c98b09bf7435 workflow/scripts/prepare_faostat_fbs_items.py: 87446f863e0e26e06b863cabcaafda362fb033f86b522b519922f86b5f80bb05 @@ -421,7 +439,7 @@ steps: workflow/scripts/solve_model.py: 8b13b5a820ba69e4385dcc0b4f576744d9759485a642ca43282c7b65861fe5cb workflow/scripts/validate_baseline_diet.py: 6d54d506a2d8382321c849d77698098429019e0f089f969c43ee2848becc05f4 config_files: - config/calibration/food_demand.yaml: 75f8d91dc73aece4621d940b183457348b3c513218d06fa00e40af2b6729769a + config/calibration/food_demand.yaml: 54f0d3a49b41661adaf73d854fb176b69a0ffa1a85af66dbd09de25f8f74ab20 inputs: data/bundled/doi_10_5061_dryad_2rbnzs7qh__v20250311/FUBC_1_to_9_data.csv: 3b5dc29b6e2f6844807f2983c1596c28a127f48a67f7deec7e36f6a49c0b17f3 data/bundled/gleam3/feed_items_categories.xlsx: b2f5f6a8dd86648c6b1a34100dfb6531aacc1c65865d2e8c4eac3a384776de9a @@ -430,7 +448,6 @@ steps: data/bundled/gleam3/production.csv: eb85e82ba9a61c71c6cd33ab36c00b5d844f2550e1caa45b6b250410adc6f2b5 data/curated/M49-codes.csv: 10ae52e639e62f07ce992ead08536167d0c8aa9f467870dbfcfbf465ef3aa9be data/curated/biogas_crop_demand.csv: 8371d2ef0d3170f4ee145b0b0fd7a1ab4e63eec87febb78ca5574866b58cff71 - data/curated/calibration/default/deviation_penalty.yaml: a20304c2ecfc7d1109d43aaded46fd650bdc5524f43e6d6365b56fc225faeca0 data/curated/calibration/default/exogenous_feed.csv: 3ebcac7797beb398a9ff227f700cab0f1e01fef27d361696d1c2b05c274cb39d data/curated/calibration/default/exogenous_forage.csv: d806b2e98968a5d0e3b8618d3882152102f11e4ce62a4de233b8560e7e1aeccc data/curated/calibration/default/fodder_conversion.csv: f46d89574830cefba376f9fdb86c0ae4462bdaf9889dcc25d8c15b0da1524458 @@ -475,30 +492,40 @@ steps: data/curated/usda_animal_cost_sources.csv: 7a27f0ad2e7dc08a10e3264e9aefc7ebfaa1ea360e3b198cb368738d995faf6a data/curated/wirsenius_feed_energy_requirements.csv: f6961ea48f00dcd793d0b61d2939c907fe87b03ab5f28f643073252a8306455c data/curated/yield_unit_conversions.csv: c1905886711b3b079bfd2761029070b874efd72f16ea5aac1f708e24d42d089f + workflow/scripts/build_model/__init__.py: 79735b7695e60ebf84e52bd91374505a357e4492f2bf80936bb00f76ffc4a7f7 workflow/scripts/build_model/animals.py: 030c2dd4b459fb856e7dc34c9dd74fe9245a340eca9055b19a6d6bf01a910f29 - workflow/scripts/build_model/biomass.py: 78059ea9d2fb953c5890dfb789b4215373a095a087d3e888cff1fa75d04e034f + workflow/scripts/build_model/biomass.py: 39bdbf6eb4d76e95cf9ce1a31a77c2b1382c1cb63dc728d5ac6f416393520f38 + workflow/scripts/build_model/commodity_costs.py: 97a4c3aa148355adac88d7a45462158f55a7322a0c351babd0a243bd941eb0e2 workflow/scripts/build_model/crops.py: 4b8638d8902b0a688d0ab55df3e3625d0953f3b4ac63886ddae50b3bf47b4610 workflow/scripts/build_model/food.py: 9e53b6c847202a2192ea0e014746e62a9a5f88eedffc5a48833fc4186ef65ae9 - workflow/scripts/build_model/grassland.py: c3ee3ae3149137e8ab427f0b5584251b9c49baac821e92f318cca816df171f48 + workflow/scripts/build_model/grassland.py: bf39536ad916a0c7a47d72fe2de4171fd256e483b81ac552d4403fe0123036da workflow/scripts/build_model/health.py: 5ddc8cbae98992f67140db787946a0f9fd9ae15ad683592b4f81b4bf6a2df702 workflow/scripts/build_model/infrastructure.py: b792d568d0f199699f5d53bc6f175138a899e41a71f86b5d72a037de1130785c - workflow/scripts/build_model/land.py: 160b8d97dfaaadcaeef4bc8efa3ebcd55ea8ad0aaf9469cc1387b4b0687f4422 + workflow/scripts/build_model/irrigation.py: 3d1d6216069eb7854046266a68b202b1f4c981395c499f8d05ab04c22f5645c2 + workflow/scripts/build_model/land.py: 8b1958b5791ec671df4621d873b2476d7aee69f3418b6c601b1036bdde87d11b workflow/scripts/build_model/nutrition.py: e94986ded9c4569cc1f3b264c352a1f7f7f72d0c3b107f2aed2ad5f44e1b875c workflow/scripts/build_model/primary_resources.py: 133c60f613ad9d758063511607d068a9e7fba04a726cc9fb714e83d9b6ae882c - workflow/scripts/build_model/trade.py: 0fa403447f9f3013fb9efd35f48b7d33044d9a5abca1bc2fe2c05460f077992a + workflow/scripts/build_model/trade.py: ef2649814994573c476eb02258b8d20b8393a5e9087906360c74cfa1412904a5 workflow/scripts/build_model/utils.py: 46fee1344183d1d2fa798b0d92ac63f3aba5989c462d0b92946bf8a83fcbee43 workflow/scripts/constants.py: ab1f55cfb14ae63171047643c634101962abdeab3b410624ad47570871268296 + workflow/scripts/solve_model/__init__.py: 23fb1fde8c5d964c8fda94020ff41ce9fdeefd04f6334a1ab3e7e755c93af04c + workflow/scripts/solve_model/core.py: 71cd673487e6475fa128fdd448e1a251d89ee1ebfc4b882f021a447acb71fd74 + workflow/scripts/solve_model/diet_stability.py: 38186fe2e56474736d9da727cd6ebb3420dd24a432391cc5da477015be0b54f4 + workflow/scripts/solve_model/food_utility.py: c12ac00a859e76d7dffa77c62fc5cb58525d92f6b886373ab49c9790692ac6a4 + workflow/scripts/solve_model/health.py: 216ff58962d5ead53b68f941c79adad79b91f60d5581e2f001e6e0850905995d + workflow/scripts/solve_model/production_stability.py: 4f238ab0f219335272a4146b118066124bf9d107dae5cc3dfe7ce89d5feabf3a + workflow/scripts/solve_model/sensitivity.py: 3ba13e457cfe34ce5ecb04c28d19d873ea6a9d4cc3c2118c3a2c4384a5bbee2a missing_inputs: [] food_waste: artefacts: data/curated/calibration/default/food_waste.yaml: 4ef037a0318401bc676f7ed65affedf80edcfdaf60ce2edcba54308810376b77 code: workflow/rules/animals.smk: fa07f649a53263c151e1799f63b40c66fba42ee7858a97d51ff988c406ba0024 - workflow/rules/crops.smk: 6413ed1571fe2db7bbac9d45db8a27d51a1c2955a86b4629f43cf70da1a048b0 + workflow/rules/crops.smk: 8d7d87b61959819ae9a753126767a71a10d7463af7963bffd423fa4560f470d1 workflow/rules/diet.smk: 15db54cf636dca37bea0343c2bb236ead24ffe238dc2a843b391bbd43bfacb12 workflow/rules/geography.smk: 54b113f5647787bacea8d2a2f45298a24c605a84ced48630abece8b2dc887943 workflow/rules/luc.smk: e64fb669c0d6c40299d47c995dbb9f04a71f4d99d8edcd1fe9ce3ed700639257 - workflow/rules/model.smk: 0e52481f84031711f0706a8c54a7e1038063e24320e52609a1fd832a977aaffd + workflow/rules/model.smk: 3a0e06937f52f250e4a5a60c8805f222ff9ad1563a125d839c53c962a847e7bb workflow/rules/retrieve.smk: ecd9eb633974cd575b7a879348c763f844b3f66cdedc785c7d28977ac541a577 workflow/rules/water.smk: 9fe3fc69051df02bab7dde53d2057b2b64142c7212741f8a45bc0171447c951d workflow/scripts/aggregate_class_areas.py: 93e9a52eec4dac86eeff03fa7e574ad4bdd91bb4049f715a321850f327aba92e @@ -510,7 +537,7 @@ steps: workflow/scripts/build_fdd_area_shares.py: b6e084b1779636547c41dada16d570ec0f98d5dc34f3d4e948e6e3943e32034a workflow/scripts/build_feed_to_animal_products.py: 1eb41eaf6149524bd6c324ba39356ee09cbebe62bd97bf2e7e4520e1b14e3ba3 workflow/scripts/build_fodder_yield_corrections.py: eef62e7237a89f1f8b962893ed031758fd6abcc1b1c71140bc0c16e92e3fc568 - workflow/scripts/build_frt_area_attribution.py: f91f51757808594f87d6a3151fd228b453181586bd342930b9749a4c21973bc8 + workflow/scripts/build_frt_area_attribution.py: 9e85a1c3352270e6463212d24ecff579e5e8378c7969a22823dd5e59b16b422b workflow/scripts/build_grassland_yields.py: 38ed635e8e162d59f33fa15ba0c649046a047ae37136203de3db2fc72b135a2d workflow/scripts/build_grazing_only_land.py: 9880aea4ffe4886ba68fdbc283b009ea984cbb0fb3159754c721b02beb3eec99 workflow/scripts/build_harvested_area.py: b6abc0557ed3c68948380d920ec77102f35e47b4712f4701a40677d15c972a98 @@ -519,16 +546,16 @@ steps: workflow/scripts/build_luc_grid.py: d8a8af444d2267b1dab55f6719bf3ade019a6410e15ed3b7888cb76d7c7061d6 workflow/scripts/build_luicube_grassland_yields.py: 01d2865e3c1878fc4795075680197b161f4cb50259a2fb7f8cdcb1e3deaf2191 workflow/scripts/build_mirca_crop_calendar.py: f44617c319c76f4e1f3d68f6d2dee14866804e498d478797e2d63612d9515e4e - workflow/scripts/build_model.py: 3294bfeb27cefb28ad3406f3fc40ff05400ddc6746f9944742d16c6a97c2b16d + workflow/scripts/build_model.py: 2d814e24e2cdd28365f44b6eea31f259ea42cea90bbf58579b4bd624a2cbd4e9 workflow/scripts/build_multi_cropping.py: 6130469e316fb795e66d87fc3f9af6b8086878abba8dfe31c9b587c87478cc21 workflow/scripts/build_ooc_olive_area_share.py: 3c5d202eabc9cd997d3dc4989e9e86e672230ce2d139cc7d96a3f5ccf459bbd5 workflow/scripts/build_reforestation_mask.py: c373bb1564782ff1400d5fd717a87e67501241c5a9e09b644ea0e199a82aefa1 workflow/scripts/build_region_class_cell_mapping.py: c8a2971f2cd7d3d46107f7c6af1a1d8bc22eacec1cca80a6a58ec04da508ad74 workflow/scripts/build_region_water_aware.py: 9d6a8e8f1bf23d51d52d802c905c6460539874505546cec68d32f08a00ec2be1 - workflow/scripts/build_region_watergap.py: 93451ae9ac67fac05fe205ca5009d0854f29012893997ed50db919ddb29ed5c5 + workflow/scripts/build_region_watergap.py: 93024ff5d92eb74703d67f1216fd8b3f5a1f4721ae010f1d148c72036e93a4ea workflow/scripts/build_regions.py: 08a1f3c0247bdbe4600f2b1596396a352ff6c459496566e7e24da5b2f83558a7 workflow/scripts/build_yield_calibration.py: 1225a0d55add24ce44acc86cde5dd3335ed9d0a233ba6025bfc8c0e5afc8375d - workflow/scripts/calculate_manure_emissions.py: c35ee707e5cfda0bc1cd0aa06f31c834f118b914b47dc6478a37222f10589f94 + workflow/scripts/calculate_manure_emissions.py: 4f39f5370dcf931d4648bf7c0727a807ec7bc8fbb80561dae4ff5afa08834591 workflow/scripts/categorize_feeds.py: 575b37f430e4fbf54b8477be96f5069ce6522fa1882c2f024b9b9a25a8540140 workflow/scripts/compose_water_supply.py: c1fc61844079219f2381664b44b6a917f51ecbc07bb08e1318702985deaf9231 workflow/scripts/compute_food_waste_calibration.py: 5973b801374e00d03362fd1b2fb7df684ea28b2c0c069a1c4c51a9b93923da98 @@ -542,7 +569,7 @@ steps: workflow/scripts/download_luicube_raster.py: 7883a5a73c9c18f6afbbabe62044494657e69b49469ae7c97b4df18f8a584b2c workflow/scripts/download_mirca_os_bag_member.py: e869f4ec2f87a03b65d7c6f875d6ad393dcce647789ba7fc0f1c2d2fa2e48049 workflow/scripts/download_soilgrids_ocs.py: bcb361c0ada72cd6264685eb36b2efabc1a03bc25c93918c37da8da7fe049d58 - workflow/scripts/estimate_baseline_diet.py: 87047e7cb0db1f5ab7460eeecfacea52c7ef36802669e0aff5b8c62079e589e9 + workflow/scripts/estimate_baseline_diet.py: d9df39a6cc46b41da12059f5c38929a62e4b53301149488f89ce704cb5440336 workflow/scripts/extract_mirca_os_archive.py: 687fe1d413ea063d585cc526ff53ce7d91c1df90e1d1ec898bfc62d19890647c workflow/scripts/merge_animal_costs.py: db83828da2fad888f0bae49e3a4d19ebc8315e27d2edcd0c6fde579b736de57c workflow/scripts/merge_dietary_sources.py: b647708a56e5d7c9359f78c644020e3b67e37f50d699004fc8462ed5700031a4 @@ -550,7 +577,7 @@ steps: workflow/scripts/prepare_banana_plantain_production.py: 214cd243b0932ee9da96cf24bdd8c7c10e05c94e27c303758cc2770e0d166e3a workflow/scripts/prepare_biofuel_baseline.py: de7fa63ca68961a1334e74af63b6e23a1360fcf810fa3a815e901e89cc8710ce workflow/scripts/prepare_fao_edible_portion.py: cb71097d23dbe14d077c2a74fbd28bd13fcf039529979cd1af64db2c184a5c0e - workflow/scripts/prepare_faostat_animal_production.py: d163e7bfb272e9b542f16dcc11ebfffae4476fbe08f9bbfcb64479b2d869ac06 + workflow/scripts/prepare_faostat_animal_production.py: 38980d9bf9324ae01664c63104026aa4b3589f71f5bc592ae8f3bbe96cde9c2a workflow/scripts/prepare_faostat_crop_costs.py: be66f2aad20af7c88085b3c24e59ce2e26cfcee25b202fd96f3a47666d65ad1b workflow/scripts/prepare_faostat_crop_production.py: f446a0f22d865d6dfb7aaab643ea245932169769070b7a72ab16c98b09bf7435 workflow/scripts/prepare_faostat_fbs_items.py: 87446f863e0e26e06b863cabcaafda362fb033f86b522b519922f86b5f80bb05 @@ -581,7 +608,7 @@ steps: workflow/scripts/solve_model.py: 8b13b5a820ba69e4385dcc0b4f576744d9759485a642ca43282c7b65861fe5cb workflow/scripts/validate_baseline_diet.py: 6d54d506a2d8382321c849d77698098429019e0f089f969c43ee2848becc05f4 config_files: - config/calibration/food_waste.yaml: d003b796f7a10db3f2cb4c8269d05e6a5c76aac0b17196e9c75dbf5c3a9755f7 + config/calibration/food_waste.yaml: 552bcc07e6fe9dfdb7de83cc7d4c19f113a8a8b61e72bd4f8a1b080498059ba7 inputs: data/bundled/doi_10_5061_dryad_2rbnzs7qh__v20250311/FUBC_1_to_9_data.csv: 3b5dc29b6e2f6844807f2983c1596c28a127f48a67f7deec7e36f6a49c0b17f3 data/bundled/gleam3/feed_items_categories.xlsx: b2f5f6a8dd86648c6b1a34100dfb6531aacc1c65865d2e8c4eac3a384776de9a @@ -590,7 +617,6 @@ steps: data/bundled/gleam3/production.csv: eb85e82ba9a61c71c6cd33ab36c00b5d844f2550e1caa45b6b250410adc6f2b5 data/curated/M49-codes.csv: 10ae52e639e62f07ce992ead08536167d0c8aa9f467870dbfcfbf465ef3aa9be data/curated/biogas_crop_demand.csv: 8371d2ef0d3170f4ee145b0b0fd7a1ab4e63eec87febb78ca5574866b58cff71 - data/curated/calibration/default/deviation_penalty.yaml: a20304c2ecfc7d1109d43aaded46fd650bdc5524f43e6d6365b56fc225faeca0 data/curated/calibration/default/exogenous_feed.csv: 3ebcac7797beb398a9ff227f700cab0f1e01fef27d361696d1c2b05c274cb39d data/curated/calibration/default/exogenous_forage.csv: d806b2e98968a5d0e3b8618d3882152102f11e4ce62a4de233b8560e7e1aeccc data/curated/calibration/default/fodder_conversion.csv: f46d89574830cefba376f9fdb86c0ae4462bdaf9889dcc25d8c15b0da1524458 @@ -634,31 +660,41 @@ steps: data/curated/usda_animal_cost_sources.csv: 7a27f0ad2e7dc08a10e3264e9aefc7ebfaa1ea360e3b198cb368738d995faf6a data/curated/wirsenius_feed_energy_requirements.csv: f6961ea48f00dcd793d0b61d2939c907fe87b03ab5f28f643073252a8306455c data/curated/yield_unit_conversions.csv: c1905886711b3b079bfd2761029070b874efd72f16ea5aac1f708e24d42d089f + workflow/scripts/build_model/__init__.py: 79735b7695e60ebf84e52bd91374505a357e4492f2bf80936bb00f76ffc4a7f7 workflow/scripts/build_model/animals.py: 030c2dd4b459fb856e7dc34c9dd74fe9245a340eca9055b19a6d6bf01a910f29 - workflow/scripts/build_model/biomass.py: 78059ea9d2fb953c5890dfb789b4215373a095a087d3e888cff1fa75d04e034f + workflow/scripts/build_model/biomass.py: 39bdbf6eb4d76e95cf9ce1a31a77c2b1382c1cb63dc728d5ac6f416393520f38 + workflow/scripts/build_model/commodity_costs.py: 97a4c3aa148355adac88d7a45462158f55a7322a0c351babd0a243bd941eb0e2 workflow/scripts/build_model/crops.py: 4b8638d8902b0a688d0ab55df3e3625d0953f3b4ac63886ddae50b3bf47b4610 workflow/scripts/build_model/food.py: 9e53b6c847202a2192ea0e014746e62a9a5f88eedffc5a48833fc4186ef65ae9 - workflow/scripts/build_model/grassland.py: c3ee3ae3149137e8ab427f0b5584251b9c49baac821e92f318cca816df171f48 + workflow/scripts/build_model/grassland.py: bf39536ad916a0c7a47d72fe2de4171fd256e483b81ac552d4403fe0123036da workflow/scripts/build_model/health.py: 5ddc8cbae98992f67140db787946a0f9fd9ae15ad683592b4f81b4bf6a2df702 workflow/scripts/build_model/infrastructure.py: b792d568d0f199699f5d53bc6f175138a899e41a71f86b5d72a037de1130785c - workflow/scripts/build_model/land.py: 160b8d97dfaaadcaeef4bc8efa3ebcd55ea8ad0aaf9469cc1387b4b0687f4422 + workflow/scripts/build_model/irrigation.py: 3d1d6216069eb7854046266a68b202b1f4c981395c499f8d05ab04c22f5645c2 + workflow/scripts/build_model/land.py: 8b1958b5791ec671df4621d873b2476d7aee69f3418b6c601b1036bdde87d11b workflow/scripts/build_model/nutrition.py: e94986ded9c4569cc1f3b264c352a1f7f7f72d0c3b107f2aed2ad5f44e1b875c workflow/scripts/build_model/primary_resources.py: 133c60f613ad9d758063511607d068a9e7fba04a726cc9fb714e83d9b6ae882c - workflow/scripts/build_model/trade.py: 0fa403447f9f3013fb9efd35f48b7d33044d9a5abca1bc2fe2c05460f077992a + workflow/scripts/build_model/trade.py: ef2649814994573c476eb02258b8d20b8393a5e9087906360c74cfa1412904a5 workflow/scripts/build_model/utils.py: 46fee1344183d1d2fa798b0d92ac63f3aba5989c462d0b92946bf8a83fcbee43 workflow/scripts/constants.py: ab1f55cfb14ae63171047643c634101962abdeab3b410624ad47570871268296 + workflow/scripts/solve_model/__init__.py: 23fb1fde8c5d964c8fda94020ff41ce9fdeefd04f6334a1ab3e7e755c93af04c + workflow/scripts/solve_model/core.py: 71cd673487e6475fa128fdd448e1a251d89ee1ebfc4b882f021a447acb71fd74 + workflow/scripts/solve_model/diet_stability.py: 38186fe2e56474736d9da727cd6ebb3420dd24a432391cc5da477015be0b54f4 + workflow/scripts/solve_model/food_utility.py: c12ac00a859e76d7dffa77c62fc5cb58525d92f6b886373ab49c9790692ac6a4 + workflow/scripts/solve_model/health.py: 216ff58962d5ead53b68f941c79adad79b91f60d5581e2f001e6e0850905995d + workflow/scripts/solve_model/production_stability.py: 4f238ab0f219335272a4146b118066124bf9d107dae5cc3dfe7ce89d5feabf3a + workflow/scripts/solve_model/sensitivity.py: 3ba13e457cfe34ce5ecb04c28d19d873ea6a9d4cc3c2118c3a2c4384a5bbee2a missing_inputs: [] stability: artefacts: - data/curated/calibration/default/deviation_penalty.yaml: a20304c2ecfc7d1109d43aaded46fd650bdc5524f43e6d6365b56fc225faeca0 + data/curated/calibration/default/deviation_penalty.yaml: 1e0b2fc1bc6e804471816f76a7e85ad3949f1dc34ab0ef1bc1f26d22a13febf0 code: workflow/rules/animals.smk: fa07f649a53263c151e1799f63b40c66fba42ee7858a97d51ff988c406ba0024 - workflow/rules/crops.smk: 6413ed1571fe2db7bbac9d45db8a27d51a1c2955a86b4629f43cf70da1a048b0 + workflow/rules/crops.smk: 8d7d87b61959819ae9a753126767a71a10d7463af7963bffd423fa4560f470d1 workflow/rules/deviation_penalty.smk: 4c6b2723520befa5a4bfc54e40ff5e93c27e2234a1762b6f63b311de3ed78209 workflow/rules/diet.smk: 15db54cf636dca37bea0343c2bb236ead24ffe238dc2a843b391bbd43bfacb12 workflow/rules/geography.smk: 54b113f5647787bacea8d2a2f45298a24c605a84ced48630abece8b2dc887943 workflow/rules/luc.smk: e64fb669c0d6c40299d47c995dbb9f04a71f4d99d8edcd1fe9ce3ed700639257 - workflow/rules/model.smk: 0e52481f84031711f0706a8c54a7e1038063e24320e52609a1fd832a977aaffd + workflow/rules/model.smk: 3a0e06937f52f250e4a5a60c8805f222ff9ad1563a125d839c53c962a847e7bb workflow/rules/retrieve.smk: ecd9eb633974cd575b7a879348c763f844b3f66cdedc785c7d28977ac541a577 workflow/rules/water.smk: 9fe3fc69051df02bab7dde53d2057b2b64142c7212741f8a45bc0171447c951d workflow/scripts/aggregate_class_areas.py: 93e9a52eec4dac86eeff03fa7e574ad4bdd91bb4049f715a321850f327aba92e @@ -670,7 +706,7 @@ steps: workflow/scripts/build_fdd_area_shares.py: b6e084b1779636547c41dada16d570ec0f98d5dc34f3d4e948e6e3943e32034a workflow/scripts/build_feed_to_animal_products.py: 1eb41eaf6149524bd6c324ba39356ee09cbebe62bd97bf2e7e4520e1b14e3ba3 workflow/scripts/build_fodder_yield_corrections.py: eef62e7237a89f1f8b962893ed031758fd6abcc1b1c71140bc0c16e92e3fc568 - workflow/scripts/build_frt_area_attribution.py: f91f51757808594f87d6a3151fd228b453181586bd342930b9749a4c21973bc8 + workflow/scripts/build_frt_area_attribution.py: 9e85a1c3352270e6463212d24ecff579e5e8378c7969a22823dd5e59b16b422b workflow/scripts/build_grassland_yields.py: 38ed635e8e162d59f33fa15ba0c649046a047ae37136203de3db2fc72b135a2d workflow/scripts/build_grazing_only_land.py: 9880aea4ffe4886ba68fdbc283b009ea984cbb0fb3159754c721b02beb3eec99 workflow/scripts/build_harvested_area.py: b6abc0557ed3c68948380d920ec77102f35e47b4712f4701a40677d15c972a98 @@ -679,17 +715,17 @@ steps: workflow/scripts/build_luc_grid.py: d8a8af444d2267b1dab55f6719bf3ade019a6410e15ed3b7888cb76d7c7061d6 workflow/scripts/build_luicube_grassland_yields.py: 01d2865e3c1878fc4795075680197b161f4cb50259a2fb7f8cdcb1e3deaf2191 workflow/scripts/build_mirca_crop_calendar.py: f44617c319c76f4e1f3d68f6d2dee14866804e498d478797e2d63612d9515e4e - workflow/scripts/build_model.py: 3294bfeb27cefb28ad3406f3fc40ff05400ddc6746f9944742d16c6a97c2b16d + workflow/scripts/build_model.py: 2d814e24e2cdd28365f44b6eea31f259ea42cea90bbf58579b4bd624a2cbd4e9 workflow/scripts/build_multi_cropping.py: 6130469e316fb795e66d87fc3f9af6b8086878abba8dfe31c9b587c87478cc21 workflow/scripts/build_ooc_olive_area_share.py: 3c5d202eabc9cd997d3dc4989e9e86e672230ce2d139cc7d96a3f5ccf459bbd5 workflow/scripts/build_reforestation_mask.py: c373bb1564782ff1400d5fd717a87e67501241c5a9e09b644ea0e199a82aefa1 workflow/scripts/build_region_class_cell_mapping.py: c8a2971f2cd7d3d46107f7c6af1a1d8bc22eacec1cca80a6a58ec04da508ad74 workflow/scripts/build_region_water_aware.py: 9d6a8e8f1bf23d51d52d802c905c6460539874505546cec68d32f08a00ec2be1 - workflow/scripts/build_region_watergap.py: 93451ae9ac67fac05fe205ca5009d0854f29012893997ed50db919ddb29ed5c5 + workflow/scripts/build_region_watergap.py: 93024ff5d92eb74703d67f1216fd8b3f5a1f4721ae010f1d148c72036e93a4ea workflow/scripts/build_regions.py: 08a1f3c0247bdbe4600f2b1596396a352ff6c459496566e7e24da5b2f83558a7 workflow/scripts/build_yield_calibration.py: 1225a0d55add24ce44acc86cde5dd3335ed9d0a233ba6025bfc8c0e5afc8375d - workflow/scripts/calculate_manure_emissions.py: c35ee707e5cfda0bc1cd0aa06f31c834f118b914b47dc6478a37222f10589f94 - workflow/scripts/calibrate_deviation_penalty.py: ab82cb7c0d206581c7ed3a85c473a9063e5bb64c1072d26aec247789e7ee63eb + workflow/scripts/calculate_manure_emissions.py: 4f39f5370dcf931d4648bf7c0727a807ec7bc8fbb80561dae4ff5afa08834591 + workflow/scripts/calibrate_deviation_penalty.py: fe674bb0ada6ca8676d202693b05cc7e6410380dd0c40634799d1a24852db02b workflow/scripts/categorize_feeds.py: 575b37f430e4fbf54b8477be96f5069ce6522fa1882c2f024b9b9a25a8540140 workflow/scripts/compose_water_supply.py: c1fc61844079219f2381664b44b6a917f51ecbc07bb08e1318702985deaf9231 workflow/scripts/compute_gleam3_feed_fractions.py: 83cc4268fe7f1762932ac63fc7f05ecedda9b03bcc1b502a69d85ec6779e6289 @@ -702,7 +738,7 @@ steps: workflow/scripts/download_luicube_raster.py: 7883a5a73c9c18f6afbbabe62044494657e69b49469ae7c97b4df18f8a584b2c workflow/scripts/download_mirca_os_bag_member.py: e869f4ec2f87a03b65d7c6f875d6ad393dcce647789ba7fc0f1c2d2fa2e48049 workflow/scripts/download_soilgrids_ocs.py: bcb361c0ada72cd6264685eb36b2efabc1a03bc25c93918c37da8da7fe049d58 - workflow/scripts/estimate_baseline_diet.py: 87047e7cb0db1f5ab7460eeecfacea52c7ef36802669e0aff5b8c62079e589e9 + workflow/scripts/estimate_baseline_diet.py: d9df39a6cc46b41da12059f5c38929a62e4b53301149488f89ce704cb5440336 workflow/scripts/extract_mirca_os_archive.py: 687fe1d413ea063d585cc526ff53ce7d91c1df90e1d1ec898bfc62d19890647c workflow/scripts/merge_animal_costs.py: db83828da2fad888f0bae49e3a4d19ebc8315e27d2edcd0c6fde579b736de57c workflow/scripts/merge_dietary_sources.py: b647708a56e5d7c9359f78c644020e3b67e37f50d699004fc8462ed5700031a4 @@ -710,7 +746,7 @@ steps: workflow/scripts/prepare_banana_plantain_production.py: 214cd243b0932ee9da96cf24bdd8c7c10e05c94e27c303758cc2770e0d166e3a workflow/scripts/prepare_biofuel_baseline.py: de7fa63ca68961a1334e74af63b6e23a1360fcf810fa3a815e901e89cc8710ce workflow/scripts/prepare_fao_edible_portion.py: cb71097d23dbe14d077c2a74fbd28bd13fcf039529979cd1af64db2c184a5c0e - workflow/scripts/prepare_faostat_animal_production.py: d163e7bfb272e9b542f16dcc11ebfffae4476fbe08f9bbfcb64479b2d869ac06 + workflow/scripts/prepare_faostat_animal_production.py: 38980d9bf9324ae01664c63104026aa4b3589f71f5bc592ae8f3bbe96cde9c2a workflow/scripts/prepare_faostat_crop_costs.py: be66f2aad20af7c88085b3c24e59ce2e26cfcee25b202fd96f3a47666d65ad1b workflow/scripts/prepare_faostat_crop_production.py: f446a0f22d865d6dfb7aaab643ea245932169769070b7a72ab16c98b09bf7435 workflow/scripts/prepare_faostat_fbs_items.py: 87446f863e0e26e06b863cabcaafda362fb033f86b522b519922f86b5f80bb05 @@ -798,17 +834,20 @@ steps: data/curated/usda_animal_cost_sources.csv: 7a27f0ad2e7dc08a10e3264e9aefc7ebfaa1ea360e3b198cb368738d995faf6a data/curated/wirsenius_feed_energy_requirements.csv: f6961ea48f00dcd793d0b61d2939c907fe87b03ab5f28f643073252a8306455c data/curated/yield_unit_conversions.csv: c1905886711b3b079bfd2761029070b874efd72f16ea5aac1f708e24d42d089f + workflow/scripts/build_model/__init__.py: 79735b7695e60ebf84e52bd91374505a357e4492f2bf80936bb00f76ffc4a7f7 workflow/scripts/build_model/animals.py: 030c2dd4b459fb856e7dc34c9dd74fe9245a340eca9055b19a6d6bf01a910f29 - workflow/scripts/build_model/biomass.py: 78059ea9d2fb953c5890dfb789b4215373a095a087d3e888cff1fa75d04e034f + workflow/scripts/build_model/biomass.py: 39bdbf6eb4d76e95cf9ce1a31a77c2b1382c1cb63dc728d5ac6f416393520f38 + workflow/scripts/build_model/commodity_costs.py: 97a4c3aa148355adac88d7a45462158f55a7322a0c351babd0a243bd941eb0e2 workflow/scripts/build_model/crops.py: 4b8638d8902b0a688d0ab55df3e3625d0953f3b4ac63886ddae50b3bf47b4610 workflow/scripts/build_model/food.py: 9e53b6c847202a2192ea0e014746e62a9a5f88eedffc5a48833fc4186ef65ae9 - workflow/scripts/build_model/grassland.py: c3ee3ae3149137e8ab427f0b5584251b9c49baac821e92f318cca816df171f48 + workflow/scripts/build_model/grassland.py: bf39536ad916a0c7a47d72fe2de4171fd256e483b81ac552d4403fe0123036da workflow/scripts/build_model/health.py: 5ddc8cbae98992f67140db787946a0f9fd9ae15ad683592b4f81b4bf6a2df702 workflow/scripts/build_model/infrastructure.py: b792d568d0f199699f5d53bc6f175138a899e41a71f86b5d72a037de1130785c - workflow/scripts/build_model/land.py: 160b8d97dfaaadcaeef4bc8efa3ebcd55ea8ad0aaf9469cc1387b4b0687f4422 + workflow/scripts/build_model/irrigation.py: 3d1d6216069eb7854046266a68b202b1f4c981395c499f8d05ab04c22f5645c2 + workflow/scripts/build_model/land.py: 8b1958b5791ec671df4621d873b2476d7aee69f3418b6c601b1036bdde87d11b workflow/scripts/build_model/nutrition.py: e94986ded9c4569cc1f3b264c352a1f7f7f72d0c3b107f2aed2ad5f44e1b875c workflow/scripts/build_model/primary_resources.py: 133c60f613ad9d758063511607d068a9e7fba04a726cc9fb714e83d9b6ae882c - workflow/scripts/build_model/trade.py: 0fa403447f9f3013fb9efd35f48b7d33044d9a5abca1bc2fe2c05460f077992a + workflow/scripts/build_model/trade.py: ef2649814994573c476eb02258b8d20b8393a5e9087906360c74cfa1412904a5 workflow/scripts/build_model/utils.py: 46fee1344183d1d2fa798b0d92ac63f3aba5989c462d0b92946bf8a83fcbee43 workflow/scripts/constants.py: ab1f55cfb14ae63171047643c634101962abdeab3b410624ad47570871268296 missing_inputs: [] diff --git a/data/curated/calibration/default/provenance.yaml b/data/curated/calibration/default/provenance.yaml index 0c5fe7e5..d826c44d 100644 --- a/data/curated/calibration/default/provenance.yaml +++ b/data/curated/calibration/default/provenance.yaml @@ -4,8 +4,8 @@ # tools/calibrate; do not edit by hand. # Licensing: see the annotation in REUSE.toml. base_config: config/default.yaml -generated_at: '2026-07-28T17:44:34+00:00' -git_commit: e62c3a149e0bc4a9b103ae49c6af12b9e62a254f +generated_at: '2026-07-28T22:22:47+00:00' +git_commit: 53225fd85a4fa4ec491f92515226a9d09f790073 source: default structural_config: aggregation.irrigated_area_source: current diff --git a/data/curated/calibration/gbd-anchored/deviation_penalty.yaml b/data/curated/calibration/gbd-anchored/deviation_penalty.yaml index 08532cfa..419badbf 100644 --- a/data/curated/calibration/gbd-anchored/deviation_penalty.yaml +++ b/data/curated/calibration/gbd-anchored/deviation_penalty.yaml @@ -17,6 +17,6 @@ l1_costs: cropland: 1.606710895127586 grassland: 0.24247737358625074 feed: 0.05417951839730158 -iterations: 1 +iterations: 0 converged: true final_residual_log_inf: 0.018045776200625075 diff --git a/data/curated/calibration/gbd-anchored/fingerprint.yaml b/data/curated/calibration/gbd-anchored/fingerprint.yaml index 283e699d..fbba4b0e 100644 --- a/data/curated/calibration/gbd-anchored/fingerprint.yaml +++ b/data/curated/calibration/gbd-anchored/fingerprint.yaml @@ -12,11 +12,11 @@ steps: code: workflow/rules/animals.smk: fa07f649a53263c151e1799f63b40c66fba42ee7858a97d51ff988c406ba0024 workflow/rules/consumer_values.smk: 4f3fb2650b690a41b45443b322745b698910abae3cb013f70e0eea8e54ba6290 - workflow/rules/crops.smk: 6413ed1571fe2db7bbac9d45db8a27d51a1c2955a86b4629f43cf70da1a048b0 + workflow/rules/crops.smk: 8d7d87b61959819ae9a753126767a71a10d7463af7963bffd423fa4560f470d1 workflow/rules/diet.smk: 15db54cf636dca37bea0343c2bb236ead24ffe238dc2a843b391bbd43bfacb12 workflow/rules/geography.smk: 54b113f5647787bacea8d2a2f45298a24c605a84ced48630abece8b2dc887943 workflow/rules/luc.smk: e64fb669c0d6c40299d47c995dbb9f04a71f4d99d8edcd1fe9ce3ed700639257 - workflow/rules/model.smk: 0e52481f84031711f0706a8c54a7e1038063e24320e52609a1fd832a977aaffd + workflow/rules/model.smk: 3a0e06937f52f250e4a5a60c8805f222ff9ad1563a125d839c53c962a847e7bb workflow/rules/retrieve.smk: ecd9eb633974cd575b7a879348c763f844b3f66cdedc785c7d28977ac541a577 workflow/rules/water.smk: 9fe3fc69051df02bab7dde53d2057b2b64142c7212741f8a45bc0171447c951d workflow/scripts/aggregate_class_areas.py: 93e9a52eec4dac86eeff03fa7e574ad4bdd91bb4049f715a321850f327aba92e @@ -28,7 +28,7 @@ steps: workflow/scripts/build_fdd_area_shares.py: b6e084b1779636547c41dada16d570ec0f98d5dc34f3d4e948e6e3943e32034a workflow/scripts/build_feed_to_animal_products.py: 1eb41eaf6149524bd6c324ba39356ee09cbebe62bd97bf2e7e4520e1b14e3ba3 workflow/scripts/build_fodder_yield_corrections.py: eef62e7237a89f1f8b962893ed031758fd6abcc1b1c71140bc0c16e92e3fc568 - workflow/scripts/build_frt_area_attribution.py: f91f51757808594f87d6a3151fd228b453181586bd342930b9749a4c21973bc8 + workflow/scripts/build_frt_area_attribution.py: 9e85a1c3352270e6463212d24ecff579e5e8378c7969a22823dd5e59b16b422b workflow/scripts/build_grassland_yields.py: 38ed635e8e162d59f33fa15ba0c649046a047ae37136203de3db2fc72b135a2d workflow/scripts/build_grazing_only_land.py: 9880aea4ffe4886ba68fdbc283b009ea984cbb0fb3159754c721b02beb3eec99 workflow/scripts/build_harvested_area.py: b6abc0557ed3c68948380d920ec77102f35e47b4712f4701a40677d15c972a98 @@ -37,16 +37,16 @@ steps: workflow/scripts/build_luc_grid.py: d8a8af444d2267b1dab55f6719bf3ade019a6410e15ed3b7888cb76d7c7061d6 workflow/scripts/build_luicube_grassland_yields.py: 01d2865e3c1878fc4795075680197b161f4cb50259a2fb7f8cdcb1e3deaf2191 workflow/scripts/build_mirca_crop_calendar.py: f44617c319c76f4e1f3d68f6d2dee14866804e498d478797e2d63612d9515e4e - workflow/scripts/build_model.py: 3294bfeb27cefb28ad3406f3fc40ff05400ddc6746f9944742d16c6a97c2b16d + workflow/scripts/build_model.py: 2d814e24e2cdd28365f44b6eea31f259ea42cea90bbf58579b4bd624a2cbd4e9 workflow/scripts/build_multi_cropping.py: 6130469e316fb795e66d87fc3f9af6b8086878abba8dfe31c9b587c87478cc21 workflow/scripts/build_ooc_olive_area_share.py: 3c5d202eabc9cd997d3dc4989e9e86e672230ce2d139cc7d96a3f5ccf459bbd5 workflow/scripts/build_reforestation_mask.py: c373bb1564782ff1400d5fd717a87e67501241c5a9e09b644ea0e199a82aefa1 workflow/scripts/build_region_class_cell_mapping.py: c8a2971f2cd7d3d46107f7c6af1a1d8bc22eacec1cca80a6a58ec04da508ad74 workflow/scripts/build_region_water_aware.py: 9d6a8e8f1bf23d51d52d802c905c6460539874505546cec68d32f08a00ec2be1 - workflow/scripts/build_region_watergap.py: 93451ae9ac67fac05fe205ca5009d0854f29012893997ed50db919ddb29ed5c5 + workflow/scripts/build_region_watergap.py: 93024ff5d92eb74703d67f1216fd8b3f5a1f4721ae010f1d148c72036e93a4ea workflow/scripts/build_regions.py: 08a1f3c0247bdbe4600f2b1596396a352ff6c459496566e7e24da5b2f83558a7 workflow/scripts/build_yield_calibration.py: 1225a0d55add24ce44acc86cde5dd3335ed9d0a233ba6025bfc8c0e5afc8375d - workflow/scripts/calculate_manure_emissions.py: c35ee707e5cfda0bc1cd0aa06f31c834f118b914b47dc6478a37222f10589f94 + workflow/scripts/calculate_manure_emissions.py: 4f39f5370dcf931d4648bf7c0727a807ec7bc8fbb80561dae4ff5afa08834591 workflow/scripts/calibrate_food_utility_blocks.py: e20676cd1b44c4504df3c9856131fa234088b1fd77c9f242144483f6f58ad330 workflow/scripts/categorize_feeds.py: 575b37f430e4fbf54b8477be96f5069ce6522fa1882c2f024b9b9a25a8540140 workflow/scripts/compose_water_supply.py: c1fc61844079219f2381664b44b6a917f51ecbc07bb08e1318702985deaf9231 @@ -60,7 +60,7 @@ steps: workflow/scripts/download_luicube_raster.py: 7883a5a73c9c18f6afbbabe62044494657e69b49469ae7c97b4df18f8a584b2c workflow/scripts/download_mirca_os_bag_member.py: e869f4ec2f87a03b65d7c6f875d6ad393dcce647789ba7fc0f1c2d2fa2e48049 workflow/scripts/download_soilgrids_ocs.py: bcb361c0ada72cd6264685eb36b2efabc1a03bc25c93918c37da8da7fe049d58 - workflow/scripts/estimate_baseline_diet.py: 87047e7cb0db1f5ab7460eeecfacea52c7ef36802669e0aff5b8c62079e589e9 + workflow/scripts/estimate_baseline_diet.py: d9df39a6cc46b41da12059f5c38929a62e4b53301149488f89ce704cb5440336 workflow/scripts/extract_consumer_values.py: eba7d4bd3d10632fc5fbcbc46f65acd5775f2bb74ca3aa3f5d6ff15113c3dd97 workflow/scripts/extract_cost_calibration.py: f7475beca73108a5f6ef63f1c284625e996abc9dadf9efc981c92e2f259d3f23 workflow/scripts/extract_mirca_os_archive.py: 687fe1d413ea063d585cc526ff53ce7d91c1df90e1d1ec898bfc62d19890647c @@ -70,7 +70,7 @@ steps: workflow/scripts/prepare_banana_plantain_production.py: 214cd243b0932ee9da96cf24bdd8c7c10e05c94e27c303758cc2770e0d166e3a workflow/scripts/prepare_biofuel_baseline.py: de7fa63ca68961a1334e74af63b6e23a1360fcf810fa3a815e901e89cc8710ce workflow/scripts/prepare_fao_edible_portion.py: cb71097d23dbe14d077c2a74fbd28bd13fcf039529979cd1af64db2c184a5c0e - workflow/scripts/prepare_faostat_animal_production.py: d163e7bfb272e9b542f16dcc11ebfffae4476fbe08f9bbfcb64479b2d869ac06 + workflow/scripts/prepare_faostat_animal_production.py: 38980d9bf9324ae01664c63104026aa4b3589f71f5bc592ae8f3bbe96cde9c2a workflow/scripts/prepare_faostat_crop_costs.py: be66f2aad20af7c88085b3c24e59ce2e26cfcee25b202fd96f3a47666d65ad1b workflow/scripts/prepare_faostat_crop_production.py: f446a0f22d865d6dfb7aaab643ea245932169769070b7a72ab16c98b09bf7435 workflow/scripts/prepare_faostat_fbs_items.py: 87446f863e0e26e06b863cabcaafda362fb033f86b522b519922f86b5f80bb05 @@ -82,7 +82,7 @@ steps: workflow/scripts/prepare_fiber_baseline.py: c9cdce9d70211b9171777f791f10a9fb63f34c4a2fc72b4f417a4a50468c8394 workflow/scripts/prepare_food_loss_waste.py: c2b33b5032de4fad69425f87a92109d8e6dd3164769b58cc3816e09347e42834 workflow/scripts/prepare_food_security_anchors.py: 374e9211799db8946bf589a8b14a4512b4bbb173f8227b92405b940e437ef4c7 - workflow/scripts/prepare_gbd_food_group_intake.py: 22c0d05151b9131fa8e072ac157ad6881e1d929ec0f5ddf7cc7869f2d2b35d3f + workflow/scripts/prepare_gbd_food_group_intake.py: cb1e8f52b5fbd7b42b4581cb6020a70978b4a2ab4b9684a5961c256ef4413679 workflow/scripts/prepare_gdd_ia_dietary_intake.py: c9b4fd5640e37644e6fb55285f86cd259427bbb60a2a4ef988cdcb82d7d4b41d workflow/scripts/prepare_gleam_feed_properties.py: 792a23dace16089a8a80f320a497c85a5c0aac54c6f9bac0281cec724d888358 workflow/scripts/prepare_luc_inputs.py: 910ef31cbf1c5800daffd2a086f73f9afb24f6250d2a475ce5eda4199a3d65c9 @@ -111,7 +111,6 @@ steps: data/bundled/gleam3/production.csv: eb85e82ba9a61c71c6cd33ab36c00b5d844f2550e1caa45b6b250410adc6f2b5 data/curated/M49-codes.csv: 10ae52e639e62f07ce992ead08536167d0c8aa9f467870dbfcfbf465ef3aa9be data/curated/biogas_crop_demand.csv: 8371d2ef0d3170f4ee145b0b0fd7a1ab4e63eec87febb78ca5574866b58cff71 - data/curated/calibration/gbd-anchored/deviation_penalty.yaml: 783dc46e38dc0fa21546ffa0e3d6e0b93a16c250f7fb7e8ad650f6d1ef28c351 data/curated/calibration/gbd-anchored/exogenous_feed.csv: a42d3bdc2ba32d535fa50f2ba496240fa774fc9014f3b565aedf976934304fb1 data/curated/calibration/gbd-anchored/exogenous_forage.csv: c059074f0f18be9709ada5f6c231869047675f72b1caa7eaef7d5e14c5976875 data/curated/calibration/gbd-anchored/fodder_conversion.csv: f46d89574830cefba376f9fdb86c0ae4462bdaf9889dcc25d8c15b0da1524458 @@ -160,19 +159,29 @@ steps: data/manually_downloaded/IHME-GBD_2023-death-rates-2020.csv: 8e0678a115b4f1a49cb5f0ed09eca8f20273ae5c7e066173afe06426740d9f9a data/manually_downloaded/IHME_GBD_2023_RISK_EXPOSURE_DIET_1: 7792dd5bf6873bd8657c2c1f99936f6b1111a357a0de3163ca7f01d696d387ef data/manually_downloaded/IHME_GBD_2023_RISK_EXPOSURE_DIET_2: e217ce5893f9041c6ff721c976b2905018e3434097282d41d41f71b9628a33be + workflow/scripts/build_model/__init__.py: 79735b7695e60ebf84e52bd91374505a357e4492f2bf80936bb00f76ffc4a7f7 workflow/scripts/build_model/animals.py: 030c2dd4b459fb856e7dc34c9dd74fe9245a340eca9055b19a6d6bf01a910f29 - workflow/scripts/build_model/biomass.py: 78059ea9d2fb953c5890dfb789b4215373a095a087d3e888cff1fa75d04e034f + workflow/scripts/build_model/biomass.py: 39bdbf6eb4d76e95cf9ce1a31a77c2b1382c1cb63dc728d5ac6f416393520f38 + workflow/scripts/build_model/commodity_costs.py: 97a4c3aa148355adac88d7a45462158f55a7322a0c351babd0a243bd941eb0e2 workflow/scripts/build_model/crops.py: 4b8638d8902b0a688d0ab55df3e3625d0953f3b4ac63886ddae50b3bf47b4610 workflow/scripts/build_model/food.py: 9e53b6c847202a2192ea0e014746e62a9a5f88eedffc5a48833fc4186ef65ae9 - workflow/scripts/build_model/grassland.py: c3ee3ae3149137e8ab427f0b5584251b9c49baac821e92f318cca816df171f48 + workflow/scripts/build_model/grassland.py: bf39536ad916a0c7a47d72fe2de4171fd256e483b81ac552d4403fe0123036da workflow/scripts/build_model/health.py: 5ddc8cbae98992f67140db787946a0f9fd9ae15ad683592b4f81b4bf6a2df702 workflow/scripts/build_model/infrastructure.py: b792d568d0f199699f5d53bc6f175138a899e41a71f86b5d72a037de1130785c - workflow/scripts/build_model/land.py: 160b8d97dfaaadcaeef4bc8efa3ebcd55ea8ad0aaf9469cc1387b4b0687f4422 + workflow/scripts/build_model/irrigation.py: 3d1d6216069eb7854046266a68b202b1f4c981395c499f8d05ab04c22f5645c2 + workflow/scripts/build_model/land.py: 8b1958b5791ec671df4621d873b2476d7aee69f3418b6c601b1036bdde87d11b workflow/scripts/build_model/nutrition.py: e94986ded9c4569cc1f3b264c352a1f7f7f72d0c3b107f2aed2ad5f44e1b875c workflow/scripts/build_model/primary_resources.py: 133c60f613ad9d758063511607d068a9e7fba04a726cc9fb714e83d9b6ae882c - workflow/scripts/build_model/trade.py: 0fa403447f9f3013fb9efd35f48b7d33044d9a5abca1bc2fe2c05460f077992a + workflow/scripts/build_model/trade.py: ef2649814994573c476eb02258b8d20b8393a5e9087906360c74cfa1412904a5 workflow/scripts/build_model/utils.py: 46fee1344183d1d2fa798b0d92ac63f3aba5989c462d0b92946bf8a83fcbee43 workflow/scripts/constants.py: ab1f55cfb14ae63171047643c634101962abdeab3b410624ad47570871268296 + workflow/scripts/solve_model/__init__.py: 23fb1fde8c5d964c8fda94020ff41ce9fdeefd04f6334a1ab3e7e755c93af04c + workflow/scripts/solve_model/core.py: 71cd673487e6475fa128fdd448e1a251d89ee1ebfc4b882f021a447acb71fd74 + workflow/scripts/solve_model/diet_stability.py: 38186fe2e56474736d9da727cd6ebb3420dd24a432391cc5da477015be0b54f4 + workflow/scripts/solve_model/food_utility.py: c12ac00a859e76d7dffa77c62fc5cb58525d92f6b886373ab49c9790692ac6a4 + workflow/scripts/solve_model/health.py: 216ff58962d5ead53b68f941c79adad79b91f60d5581e2f001e6e0850905995d + workflow/scripts/solve_model/production_stability.py: 4f238ab0f219335272a4146b118066124bf9d107dae5cc3dfe7ce89d5feabf3a + workflow/scripts/solve_model/sensitivity.py: 3ba13e457cfe34ce5ecb04c28d19d873ea6a9d4cc3c2118c3a2c4384a5bbee2a missing_inputs: [] feed: artefacts: @@ -182,11 +191,11 @@ steps: data/curated/calibration/gbd-anchored/grassland_yield.csv: 7e2c656be823646dd9325400e3c7612388b2ff336cdaa9fbcd7831553f05eb79 code: workflow/rules/animals.smk: fa07f649a53263c151e1799f63b40c66fba42ee7858a97d51ff988c406ba0024 - workflow/rules/crops.smk: 6413ed1571fe2db7bbac9d45db8a27d51a1c2955a86b4629f43cf70da1a048b0 + workflow/rules/crops.smk: 8d7d87b61959819ae9a753126767a71a10d7463af7963bffd423fa4560f470d1 workflow/rules/diet.smk: 15db54cf636dca37bea0343c2bb236ead24ffe238dc2a843b391bbd43bfacb12 workflow/rules/geography.smk: 54b113f5647787bacea8d2a2f45298a24c605a84ced48630abece8b2dc887943 workflow/rules/luc.smk: e64fb669c0d6c40299d47c995dbb9f04a71f4d99d8edcd1fe9ce3ed700639257 - workflow/rules/model.smk: 0e52481f84031711f0706a8c54a7e1038063e24320e52609a1fd832a977aaffd + workflow/rules/model.smk: 3a0e06937f52f250e4a5a60c8805f222ff9ad1563a125d839c53c962a847e7bb workflow/rules/retrieve.smk: ecd9eb633974cd575b7a879348c763f844b3f66cdedc785c7d28977ac541a577 workflow/rules/water.smk: 9fe3fc69051df02bab7dde53d2057b2b64142c7212741f8a45bc0171447c951d workflow/scripts/aggregate_class_areas.py: 93e9a52eec4dac86eeff03fa7e574ad4bdd91bb4049f715a321850f327aba92e @@ -198,7 +207,7 @@ steps: workflow/scripts/build_fdd_area_shares.py: b6e084b1779636547c41dada16d570ec0f98d5dc34f3d4e948e6e3943e32034a workflow/scripts/build_feed_to_animal_products.py: 1eb41eaf6149524bd6c324ba39356ee09cbebe62bd97bf2e7e4520e1b14e3ba3 workflow/scripts/build_fodder_yield_corrections.py: eef62e7237a89f1f8b962893ed031758fd6abcc1b1c71140bc0c16e92e3fc568 - workflow/scripts/build_frt_area_attribution.py: f91f51757808594f87d6a3151fd228b453181586bd342930b9749a4c21973bc8 + workflow/scripts/build_frt_area_attribution.py: 9e85a1c3352270e6463212d24ecff579e5e8378c7969a22823dd5e59b16b422b workflow/scripts/build_grassland_yields.py: 38ed635e8e162d59f33fa15ba0c649046a047ae37136203de3db2fc72b135a2d workflow/scripts/build_grazing_only_land.py: 9880aea4ffe4886ba68fdbc283b009ea984cbb0fb3159754c721b02beb3eec99 workflow/scripts/build_harvested_area.py: b6abc0557ed3c68948380d920ec77102f35e47b4712f4701a40677d15c972a98 @@ -207,16 +216,16 @@ steps: workflow/scripts/build_luc_grid.py: d8a8af444d2267b1dab55f6719bf3ade019a6410e15ed3b7888cb76d7c7061d6 workflow/scripts/build_luicube_grassland_yields.py: 01d2865e3c1878fc4795075680197b161f4cb50259a2fb7f8cdcb1e3deaf2191 workflow/scripts/build_mirca_crop_calendar.py: f44617c319c76f4e1f3d68f6d2dee14866804e498d478797e2d63612d9515e4e - workflow/scripts/build_model.py: 3294bfeb27cefb28ad3406f3fc40ff05400ddc6746f9944742d16c6a97c2b16d + workflow/scripts/build_model.py: 2d814e24e2cdd28365f44b6eea31f259ea42cea90bbf58579b4bd624a2cbd4e9 workflow/scripts/build_multi_cropping.py: 6130469e316fb795e66d87fc3f9af6b8086878abba8dfe31c9b587c87478cc21 workflow/scripts/build_ooc_olive_area_share.py: 3c5d202eabc9cd997d3dc4989e9e86e672230ce2d139cc7d96a3f5ccf459bbd5 workflow/scripts/build_reforestation_mask.py: c373bb1564782ff1400d5fd717a87e67501241c5a9e09b644ea0e199a82aefa1 workflow/scripts/build_region_class_cell_mapping.py: c8a2971f2cd7d3d46107f7c6af1a1d8bc22eacec1cca80a6a58ec04da508ad74 workflow/scripts/build_region_water_aware.py: 9d6a8e8f1bf23d51d52d802c905c6460539874505546cec68d32f08a00ec2be1 - workflow/scripts/build_region_watergap.py: 93451ae9ac67fac05fe205ca5009d0854f29012893997ed50db919ddb29ed5c5 + workflow/scripts/build_region_watergap.py: 93024ff5d92eb74703d67f1216fd8b3f5a1f4721ae010f1d148c72036e93a4ea workflow/scripts/build_regions.py: 08a1f3c0247bdbe4600f2b1596396a352ff6c459496566e7e24da5b2f83558a7 workflow/scripts/build_yield_calibration.py: 1225a0d55add24ce44acc86cde5dd3335ed9d0a233ba6025bfc8c0e5afc8375d - workflow/scripts/calculate_manure_emissions.py: c35ee707e5cfda0bc1cd0aa06f31c834f118b914b47dc6478a37222f10589f94 + workflow/scripts/calculate_manure_emissions.py: 4f39f5370dcf931d4648bf7c0727a807ec7bc8fbb80561dae4ff5afa08834591 workflow/scripts/categorize_feeds.py: 575b37f430e4fbf54b8477be96f5069ce6522fa1882c2f024b9b9a25a8540140 workflow/scripts/compose_water_supply.py: c1fc61844079219f2381664b44b6a917f51ecbc07bb08e1318702985deaf9231 workflow/scripts/compute_exogenous_feed_calibration.py: e72a80a835bbf1cca799f46e861ceef67c0e03a2fdaebc4ded10d31b55d4a5bd @@ -231,7 +240,7 @@ steps: workflow/scripts/download_luicube_raster.py: 7883a5a73c9c18f6afbbabe62044494657e69b49469ae7c97b4df18f8a584b2c workflow/scripts/download_mirca_os_bag_member.py: e869f4ec2f87a03b65d7c6f875d6ad393dcce647789ba7fc0f1c2d2fa2e48049 workflow/scripts/download_soilgrids_ocs.py: bcb361c0ada72cd6264685eb36b2efabc1a03bc25c93918c37da8da7fe049d58 - workflow/scripts/estimate_baseline_diet.py: 87047e7cb0db1f5ab7460eeecfacea52c7ef36802669e0aff5b8c62079e589e9 + workflow/scripts/estimate_baseline_diet.py: d9df39a6cc46b41da12059f5c38929a62e4b53301149488f89ce704cb5440336 workflow/scripts/extract_mirca_os_archive.py: 687fe1d413ea063d585cc526ff53ce7d91c1df90e1d1ec898bfc62d19890647c workflow/scripts/merge_animal_costs.py: db83828da2fad888f0bae49e3a4d19ebc8315e27d2edcd0c6fde579b736de57c workflow/scripts/merge_dietary_sources.py: b647708a56e5d7c9359f78c644020e3b67e37f50d699004fc8462ed5700031a4 @@ -239,7 +248,7 @@ steps: workflow/scripts/prepare_banana_plantain_production.py: 214cd243b0932ee9da96cf24bdd8c7c10e05c94e27c303758cc2770e0d166e3a workflow/scripts/prepare_biofuel_baseline.py: de7fa63ca68961a1334e74af63b6e23a1360fcf810fa3a815e901e89cc8710ce workflow/scripts/prepare_fao_edible_portion.py: cb71097d23dbe14d077c2a74fbd28bd13fcf039529979cd1af64db2c184a5c0e - workflow/scripts/prepare_faostat_animal_production.py: d163e7bfb272e9b542f16dcc11ebfffae4476fbe08f9bbfcb64479b2d869ac06 + workflow/scripts/prepare_faostat_animal_production.py: 38980d9bf9324ae01664c63104026aa4b3589f71f5bc592ae8f3bbe96cde9c2a workflow/scripts/prepare_faostat_crop_costs.py: be66f2aad20af7c88085b3c24e59ce2e26cfcee25b202fd96f3a47666d65ad1b workflow/scripts/prepare_faostat_crop_production.py: f446a0f22d865d6dfb7aaab643ea245932169769070b7a72ab16c98b09bf7435 workflow/scripts/prepare_faostat_fbs_items.py: 87446f863e0e26e06b863cabcaafda362fb033f86b522b519922f86b5f80bb05 @@ -251,7 +260,7 @@ steps: workflow/scripts/prepare_fiber_baseline.py: c9cdce9d70211b9171777f791f10a9fb63f34c4a2fc72b4f417a4a50468c8394 workflow/scripts/prepare_food_loss_waste.py: c2b33b5032de4fad69425f87a92109d8e6dd3164769b58cc3816e09347e42834 workflow/scripts/prepare_food_security_anchors.py: 374e9211799db8946bf589a8b14a4512b4bbb173f8227b92405b940e437ef4c7 - workflow/scripts/prepare_gbd_food_group_intake.py: 22c0d05151b9131fa8e072ac157ad6881e1d929ec0f5ddf7cc7869f2d2b35d3f + workflow/scripts/prepare_gbd_food_group_intake.py: cb1e8f52b5fbd7b42b4581cb6020a70978b4a2ab4b9684a5961c256ef4413679 workflow/scripts/prepare_gdd_ia_dietary_intake.py: c9b4fd5640e37644e6fb55285f86cd259427bbb60a2a4ef988cdcb82d7d4b41d workflow/scripts/prepare_gleam_feed_properties.py: 792a23dace16089a8a80f320a497c85a5c0aac54c6f9bac0281cec724d888358 workflow/scripts/prepare_luc_inputs.py: 910ef31cbf1c5800daffd2a086f73f9afb24f6250d2a475ce5eda4199a3d65c9 @@ -271,7 +280,7 @@ steps: workflow/scripts/solve_model.py: 8b13b5a820ba69e4385dcc0b4f576744d9759485a642ca43282c7b65861fe5cb workflow/scripts/validate_baseline_diet.py: 6d54d506a2d8382321c849d77698098429019e0f089f969c43ee2848becc05f4 config_files: - config/calibration/feed.yaml: dc76da31efdef7eb308b665b728b847c756883b1a3d478721baacfa3ffe64488 + config/calibration/feed.yaml: e89dbae29b5006642970dd73044e8c1278c6c7cc434118128fe0782cdead31f2 inputs: data/bundled/doi_10_5061_dryad_2rbnzs7qh__v20250311/FUBC_1_to_9_data.csv: 3b5dc29b6e2f6844807f2983c1596c28a127f48a67f7deec7e36f6a49c0b17f3 data/bundled/gleam3/feed_items_categories.xlsx: b2f5f6a8dd86648c6b1a34100dfb6531aacc1c65865d2e8c4eac3a384776de9a @@ -280,7 +289,6 @@ steps: data/bundled/gleam3/production.csv: eb85e82ba9a61c71c6cd33ab36c00b5d844f2550e1caa45b6b250410adc6f2b5 data/curated/M49-codes.csv: 10ae52e639e62f07ce992ead08536167d0c8aa9f467870dbfcfbf465ef3aa9be data/curated/biogas_crop_demand.csv: 8371d2ef0d3170f4ee145b0b0fd7a1ab4e63eec87febb78ca5574866b58cff71 - data/curated/calibration/gbd-anchored/deviation_penalty.yaml: 783dc46e38dc0fa21546ffa0e3d6e0b93a16c250f7fb7e8ad650f6d1ef28c351 data/curated/country_mottet_region.csv: 8c41e8d0a8ad7ec8cd89b9c9cdbb72b6870fb8e9b59dd6ba6e49be468c5651a3 data/curated/country_wirsenius_region.csv: 73ae37e68c61286b0312b04b0d1dbc661322d8be5c5e5e66754fff1c9dcfac6e data/curated/crop_moisture_content.csv: b9e6ac4455fdbb6c28f211a291d2cde59439b7e2215d987e104544cc9eeebfe7 @@ -323,30 +331,40 @@ steps: data/manually_downloaded/IHME-GBD_2023-death-rates-2020.csv: 8e0678a115b4f1a49cb5f0ed09eca8f20273ae5c7e066173afe06426740d9f9a data/manually_downloaded/IHME_GBD_2023_RISK_EXPOSURE_DIET_1: 7792dd5bf6873bd8657c2c1f99936f6b1111a357a0de3163ca7f01d696d387ef data/manually_downloaded/IHME_GBD_2023_RISK_EXPOSURE_DIET_2: e217ce5893f9041c6ff721c976b2905018e3434097282d41d41f71b9628a33be + workflow/scripts/build_model/__init__.py: 79735b7695e60ebf84e52bd91374505a357e4492f2bf80936bb00f76ffc4a7f7 workflow/scripts/build_model/animals.py: 030c2dd4b459fb856e7dc34c9dd74fe9245a340eca9055b19a6d6bf01a910f29 - workflow/scripts/build_model/biomass.py: 78059ea9d2fb953c5890dfb789b4215373a095a087d3e888cff1fa75d04e034f + workflow/scripts/build_model/biomass.py: 39bdbf6eb4d76e95cf9ce1a31a77c2b1382c1cb63dc728d5ac6f416393520f38 + workflow/scripts/build_model/commodity_costs.py: 97a4c3aa148355adac88d7a45462158f55a7322a0c351babd0a243bd941eb0e2 workflow/scripts/build_model/crops.py: 4b8638d8902b0a688d0ab55df3e3625d0953f3b4ac63886ddae50b3bf47b4610 workflow/scripts/build_model/food.py: 9e53b6c847202a2192ea0e014746e62a9a5f88eedffc5a48833fc4186ef65ae9 - workflow/scripts/build_model/grassland.py: c3ee3ae3149137e8ab427f0b5584251b9c49baac821e92f318cca816df171f48 + workflow/scripts/build_model/grassland.py: bf39536ad916a0c7a47d72fe2de4171fd256e483b81ac552d4403fe0123036da workflow/scripts/build_model/health.py: 5ddc8cbae98992f67140db787946a0f9fd9ae15ad683592b4f81b4bf6a2df702 workflow/scripts/build_model/infrastructure.py: b792d568d0f199699f5d53bc6f175138a899e41a71f86b5d72a037de1130785c - workflow/scripts/build_model/land.py: 160b8d97dfaaadcaeef4bc8efa3ebcd55ea8ad0aaf9469cc1387b4b0687f4422 + workflow/scripts/build_model/irrigation.py: 3d1d6216069eb7854046266a68b202b1f4c981395c499f8d05ab04c22f5645c2 + workflow/scripts/build_model/land.py: 8b1958b5791ec671df4621d873b2476d7aee69f3418b6c601b1036bdde87d11b workflow/scripts/build_model/nutrition.py: e94986ded9c4569cc1f3b264c352a1f7f7f72d0c3b107f2aed2ad5f44e1b875c workflow/scripts/build_model/primary_resources.py: 133c60f613ad9d758063511607d068a9e7fba04a726cc9fb714e83d9b6ae882c - workflow/scripts/build_model/trade.py: 0fa403447f9f3013fb9efd35f48b7d33044d9a5abca1bc2fe2c05460f077992a + workflow/scripts/build_model/trade.py: ef2649814994573c476eb02258b8d20b8393a5e9087906360c74cfa1412904a5 workflow/scripts/build_model/utils.py: 46fee1344183d1d2fa798b0d92ac63f3aba5989c462d0b92946bf8a83fcbee43 workflow/scripts/constants.py: ab1f55cfb14ae63171047643c634101962abdeab3b410624ad47570871268296 + workflow/scripts/solve_model/__init__.py: 23fb1fde8c5d964c8fda94020ff41ce9fdeefd04f6334a1ab3e7e755c93af04c + workflow/scripts/solve_model/core.py: 71cd673487e6475fa128fdd448e1a251d89ee1ebfc4b882f021a447acb71fd74 + workflow/scripts/solve_model/diet_stability.py: 38186fe2e56474736d9da727cd6ebb3420dd24a432391cc5da477015be0b54f4 + workflow/scripts/solve_model/food_utility.py: c12ac00a859e76d7dffa77c62fc5cb58525d92f6b886373ab49c9790692ac6a4 + workflow/scripts/solve_model/health.py: 216ff58962d5ead53b68f941c79adad79b91f60d5581e2f001e6e0850905995d + workflow/scripts/solve_model/production_stability.py: 4f238ab0f219335272a4146b118066124bf9d107dae5cc3dfe7ce89d5feabf3a + workflow/scripts/solve_model/sensitivity.py: 3ba13e457cfe34ce5ecb04c28d19d873ea6a9d4cc3c2118c3a2c4384a5bbee2a missing_inputs: [] food_demand: artefacts: data/curated/calibration/gbd-anchored/food_demand.csv: d59ae58f60259a33fed247f16a341d1162878a37a6167a74e95b3b55d4b18f67 code: workflow/rules/animals.smk: fa07f649a53263c151e1799f63b40c66fba42ee7858a97d51ff988c406ba0024 - workflow/rules/crops.smk: 6413ed1571fe2db7bbac9d45db8a27d51a1c2955a86b4629f43cf70da1a048b0 + workflow/rules/crops.smk: 8d7d87b61959819ae9a753126767a71a10d7463af7963bffd423fa4560f470d1 workflow/rules/diet.smk: 15db54cf636dca37bea0343c2bb236ead24ffe238dc2a843b391bbd43bfacb12 workflow/rules/geography.smk: 54b113f5647787bacea8d2a2f45298a24c605a84ced48630abece8b2dc887943 workflow/rules/luc.smk: e64fb669c0d6c40299d47c995dbb9f04a71f4d99d8edcd1fe9ce3ed700639257 - workflow/rules/model.smk: 0e52481f84031711f0706a8c54a7e1038063e24320e52609a1fd832a977aaffd + workflow/rules/model.smk: 3a0e06937f52f250e4a5a60c8805f222ff9ad1563a125d839c53c962a847e7bb workflow/rules/retrieve.smk: ecd9eb633974cd575b7a879348c763f844b3f66cdedc785c7d28977ac541a577 workflow/rules/water.smk: 9fe3fc69051df02bab7dde53d2057b2b64142c7212741f8a45bc0171447c951d workflow/scripts/aggregate_class_areas.py: 93e9a52eec4dac86eeff03fa7e574ad4bdd91bb4049f715a321850f327aba92e @@ -358,7 +376,7 @@ steps: workflow/scripts/build_fdd_area_shares.py: b6e084b1779636547c41dada16d570ec0f98d5dc34f3d4e948e6e3943e32034a workflow/scripts/build_feed_to_animal_products.py: 1eb41eaf6149524bd6c324ba39356ee09cbebe62bd97bf2e7e4520e1b14e3ba3 workflow/scripts/build_fodder_yield_corrections.py: eef62e7237a89f1f8b962893ed031758fd6abcc1b1c71140bc0c16e92e3fc568 - workflow/scripts/build_frt_area_attribution.py: f91f51757808594f87d6a3151fd228b453181586bd342930b9749a4c21973bc8 + workflow/scripts/build_frt_area_attribution.py: 9e85a1c3352270e6463212d24ecff579e5e8378c7969a22823dd5e59b16b422b workflow/scripts/build_grassland_yields.py: 38ed635e8e162d59f33fa15ba0c649046a047ae37136203de3db2fc72b135a2d workflow/scripts/build_grazing_only_land.py: 9880aea4ffe4886ba68fdbc283b009ea984cbb0fb3159754c721b02beb3eec99 workflow/scripts/build_harvested_area.py: b6abc0557ed3c68948380d920ec77102f35e47b4712f4701a40677d15c972a98 @@ -367,16 +385,16 @@ steps: workflow/scripts/build_luc_grid.py: d8a8af444d2267b1dab55f6719bf3ade019a6410e15ed3b7888cb76d7c7061d6 workflow/scripts/build_luicube_grassland_yields.py: 01d2865e3c1878fc4795075680197b161f4cb50259a2fb7f8cdcb1e3deaf2191 workflow/scripts/build_mirca_crop_calendar.py: f44617c319c76f4e1f3d68f6d2dee14866804e498d478797e2d63612d9515e4e - workflow/scripts/build_model.py: 3294bfeb27cefb28ad3406f3fc40ff05400ddc6746f9944742d16c6a97c2b16d + workflow/scripts/build_model.py: 2d814e24e2cdd28365f44b6eea31f259ea42cea90bbf58579b4bd624a2cbd4e9 workflow/scripts/build_multi_cropping.py: 6130469e316fb795e66d87fc3f9af6b8086878abba8dfe31c9b587c87478cc21 workflow/scripts/build_ooc_olive_area_share.py: 3c5d202eabc9cd997d3dc4989e9e86e672230ce2d139cc7d96a3f5ccf459bbd5 workflow/scripts/build_reforestation_mask.py: c373bb1564782ff1400d5fd717a87e67501241c5a9e09b644ea0e199a82aefa1 workflow/scripts/build_region_class_cell_mapping.py: c8a2971f2cd7d3d46107f7c6af1a1d8bc22eacec1cca80a6a58ec04da508ad74 workflow/scripts/build_region_water_aware.py: 9d6a8e8f1bf23d51d52d802c905c6460539874505546cec68d32f08a00ec2be1 - workflow/scripts/build_region_watergap.py: 93451ae9ac67fac05fe205ca5009d0854f29012893997ed50db919ddb29ed5c5 + workflow/scripts/build_region_watergap.py: 93024ff5d92eb74703d67f1216fd8b3f5a1f4721ae010f1d148c72036e93a4ea workflow/scripts/build_regions.py: 08a1f3c0247bdbe4600f2b1596396a352ff6c459496566e7e24da5b2f83558a7 workflow/scripts/build_yield_calibration.py: 1225a0d55add24ce44acc86cde5dd3335ed9d0a233ba6025bfc8c0e5afc8375d - workflow/scripts/calculate_manure_emissions.py: c35ee707e5cfda0bc1cd0aa06f31c834f118b914b47dc6478a37222f10589f94 + workflow/scripts/calculate_manure_emissions.py: 4f39f5370dcf931d4648bf7c0727a807ec7bc8fbb80561dae4ff5afa08834591 workflow/scripts/categorize_feeds.py: 575b37f430e4fbf54b8477be96f5069ce6522fa1882c2f024b9b9a25a8540140 workflow/scripts/compose_water_supply.py: c1fc61844079219f2381664b44b6a917f51ecbc07bb08e1318702985deaf9231 workflow/scripts/compute_food_demand_calibration.py: b231f34617c676c5df60abe4c418388b84a3d41acfd78313804489be9017172e @@ -390,7 +408,7 @@ steps: workflow/scripts/download_luicube_raster.py: 7883a5a73c9c18f6afbbabe62044494657e69b49469ae7c97b4df18f8a584b2c workflow/scripts/download_mirca_os_bag_member.py: e869f4ec2f87a03b65d7c6f875d6ad393dcce647789ba7fc0f1c2d2fa2e48049 workflow/scripts/download_soilgrids_ocs.py: bcb361c0ada72cd6264685eb36b2efabc1a03bc25c93918c37da8da7fe049d58 - workflow/scripts/estimate_baseline_diet.py: 87047e7cb0db1f5ab7460eeecfacea52c7ef36802669e0aff5b8c62079e589e9 + workflow/scripts/estimate_baseline_diet.py: d9df39a6cc46b41da12059f5c38929a62e4b53301149488f89ce704cb5440336 workflow/scripts/extract_mirca_os_archive.py: 687fe1d413ea063d585cc526ff53ce7d91c1df90e1d1ec898bfc62d19890647c workflow/scripts/merge_animal_costs.py: db83828da2fad888f0bae49e3a4d19ebc8315e27d2edcd0c6fde579b736de57c workflow/scripts/merge_dietary_sources.py: b647708a56e5d7c9359f78c644020e3b67e37f50d699004fc8462ed5700031a4 @@ -398,7 +416,7 @@ steps: workflow/scripts/prepare_banana_plantain_production.py: 214cd243b0932ee9da96cf24bdd8c7c10e05c94e27c303758cc2770e0d166e3a workflow/scripts/prepare_biofuel_baseline.py: de7fa63ca68961a1334e74af63b6e23a1360fcf810fa3a815e901e89cc8710ce workflow/scripts/prepare_fao_edible_portion.py: cb71097d23dbe14d077c2a74fbd28bd13fcf039529979cd1af64db2c184a5c0e - workflow/scripts/prepare_faostat_animal_production.py: d163e7bfb272e9b542f16dcc11ebfffae4476fbe08f9bbfcb64479b2d869ac06 + workflow/scripts/prepare_faostat_animal_production.py: 38980d9bf9324ae01664c63104026aa4b3589f71f5bc592ae8f3bbe96cde9c2a workflow/scripts/prepare_faostat_crop_costs.py: be66f2aad20af7c88085b3c24e59ce2e26cfcee25b202fd96f3a47666d65ad1b workflow/scripts/prepare_faostat_crop_production.py: f446a0f22d865d6dfb7aaab643ea245932169769070b7a72ab16c98b09bf7435 workflow/scripts/prepare_faostat_fbs_items.py: 87446f863e0e26e06b863cabcaafda362fb033f86b522b519922f86b5f80bb05 @@ -410,7 +428,7 @@ steps: workflow/scripts/prepare_fiber_baseline.py: c9cdce9d70211b9171777f791f10a9fb63f34c4a2fc72b4f417a4a50468c8394 workflow/scripts/prepare_food_loss_waste.py: c2b33b5032de4fad69425f87a92109d8e6dd3164769b58cc3816e09347e42834 workflow/scripts/prepare_food_security_anchors.py: 374e9211799db8946bf589a8b14a4512b4bbb173f8227b92405b940e437ef4c7 - workflow/scripts/prepare_gbd_food_group_intake.py: 22c0d05151b9131fa8e072ac157ad6881e1d929ec0f5ddf7cc7869f2d2b35d3f + workflow/scripts/prepare_gbd_food_group_intake.py: cb1e8f52b5fbd7b42b4581cb6020a70978b4a2ab4b9684a5961c256ef4413679 workflow/scripts/prepare_gdd_ia_dietary_intake.py: c9b4fd5640e37644e6fb55285f86cd259427bbb60a2a4ef988cdcb82d7d4b41d workflow/scripts/prepare_gleam_feed_properties.py: 792a23dace16089a8a80f320a497c85a5c0aac54c6f9bac0281cec724d888358 workflow/scripts/prepare_luc_inputs.py: 910ef31cbf1c5800daffd2a086f73f9afb24f6250d2a475ce5eda4199a3d65c9 @@ -430,7 +448,7 @@ steps: workflow/scripts/solve_model.py: 8b13b5a820ba69e4385dcc0b4f576744d9759485a642ca43282c7b65861fe5cb workflow/scripts/validate_baseline_diet.py: 6d54d506a2d8382321c849d77698098429019e0f089f969c43ee2848becc05f4 config_files: - config/calibration/food_demand.yaml: 75f8d91dc73aece4621d940b183457348b3c513218d06fa00e40af2b6729769a + config/calibration/food_demand.yaml: 54f0d3a49b41661adaf73d854fb176b69a0ffa1a85af66dbd09de25f8f74ab20 inputs: data/bundled/doi_10_5061_dryad_2rbnzs7qh__v20250311/FUBC_1_to_9_data.csv: 3b5dc29b6e2f6844807f2983c1596c28a127f48a67f7deec7e36f6a49c0b17f3 data/bundled/gleam3/feed_items_categories.xlsx: b2f5f6a8dd86648c6b1a34100dfb6531aacc1c65865d2e8c4eac3a384776de9a @@ -439,7 +457,6 @@ steps: data/bundled/gleam3/production.csv: eb85e82ba9a61c71c6cd33ab36c00b5d844f2550e1caa45b6b250410adc6f2b5 data/curated/M49-codes.csv: 10ae52e639e62f07ce992ead08536167d0c8aa9f467870dbfcfbf465ef3aa9be data/curated/biogas_crop_demand.csv: 8371d2ef0d3170f4ee145b0b0fd7a1ab4e63eec87febb78ca5574866b58cff71 - data/curated/calibration/gbd-anchored/deviation_penalty.yaml: 783dc46e38dc0fa21546ffa0e3d6e0b93a16c250f7fb7e8ad650f6d1ef28c351 data/curated/calibration/gbd-anchored/exogenous_feed.csv: a42d3bdc2ba32d535fa50f2ba496240fa774fc9014f3b565aedf976934304fb1 data/curated/calibration/gbd-anchored/exogenous_forage.csv: c059074f0f18be9709ada5f6c231869047675f72b1caa7eaef7d5e14c5976875 data/curated/calibration/gbd-anchored/fodder_conversion.csv: f46d89574830cefba376f9fdb86c0ae4462bdaf9889dcc25d8c15b0da1524458 @@ -487,30 +504,40 @@ steps: data/manually_downloaded/IHME-GBD_2023-death-rates-2020.csv: 8e0678a115b4f1a49cb5f0ed09eca8f20273ae5c7e066173afe06426740d9f9a data/manually_downloaded/IHME_GBD_2023_RISK_EXPOSURE_DIET_1: 7792dd5bf6873bd8657c2c1f99936f6b1111a357a0de3163ca7f01d696d387ef data/manually_downloaded/IHME_GBD_2023_RISK_EXPOSURE_DIET_2: e217ce5893f9041c6ff721c976b2905018e3434097282d41d41f71b9628a33be + workflow/scripts/build_model/__init__.py: 79735b7695e60ebf84e52bd91374505a357e4492f2bf80936bb00f76ffc4a7f7 workflow/scripts/build_model/animals.py: 030c2dd4b459fb856e7dc34c9dd74fe9245a340eca9055b19a6d6bf01a910f29 - workflow/scripts/build_model/biomass.py: 78059ea9d2fb953c5890dfb789b4215373a095a087d3e888cff1fa75d04e034f + workflow/scripts/build_model/biomass.py: 39bdbf6eb4d76e95cf9ce1a31a77c2b1382c1cb63dc728d5ac6f416393520f38 + workflow/scripts/build_model/commodity_costs.py: 97a4c3aa148355adac88d7a45462158f55a7322a0c351babd0a243bd941eb0e2 workflow/scripts/build_model/crops.py: 4b8638d8902b0a688d0ab55df3e3625d0953f3b4ac63886ddae50b3bf47b4610 workflow/scripts/build_model/food.py: 9e53b6c847202a2192ea0e014746e62a9a5f88eedffc5a48833fc4186ef65ae9 - workflow/scripts/build_model/grassland.py: c3ee3ae3149137e8ab427f0b5584251b9c49baac821e92f318cca816df171f48 + workflow/scripts/build_model/grassland.py: bf39536ad916a0c7a47d72fe2de4171fd256e483b81ac552d4403fe0123036da workflow/scripts/build_model/health.py: 5ddc8cbae98992f67140db787946a0f9fd9ae15ad683592b4f81b4bf6a2df702 workflow/scripts/build_model/infrastructure.py: b792d568d0f199699f5d53bc6f175138a899e41a71f86b5d72a037de1130785c - workflow/scripts/build_model/land.py: 160b8d97dfaaadcaeef4bc8efa3ebcd55ea8ad0aaf9469cc1387b4b0687f4422 + workflow/scripts/build_model/irrigation.py: 3d1d6216069eb7854046266a68b202b1f4c981395c499f8d05ab04c22f5645c2 + workflow/scripts/build_model/land.py: 8b1958b5791ec671df4621d873b2476d7aee69f3418b6c601b1036bdde87d11b workflow/scripts/build_model/nutrition.py: e94986ded9c4569cc1f3b264c352a1f7f7f72d0c3b107f2aed2ad5f44e1b875c workflow/scripts/build_model/primary_resources.py: 133c60f613ad9d758063511607d068a9e7fba04a726cc9fb714e83d9b6ae882c - workflow/scripts/build_model/trade.py: 0fa403447f9f3013fb9efd35f48b7d33044d9a5abca1bc2fe2c05460f077992a + workflow/scripts/build_model/trade.py: ef2649814994573c476eb02258b8d20b8393a5e9087906360c74cfa1412904a5 workflow/scripts/build_model/utils.py: 46fee1344183d1d2fa798b0d92ac63f3aba5989c462d0b92946bf8a83fcbee43 workflow/scripts/constants.py: ab1f55cfb14ae63171047643c634101962abdeab3b410624ad47570871268296 + workflow/scripts/solve_model/__init__.py: 23fb1fde8c5d964c8fda94020ff41ce9fdeefd04f6334a1ab3e7e755c93af04c + workflow/scripts/solve_model/core.py: 71cd673487e6475fa128fdd448e1a251d89ee1ebfc4b882f021a447acb71fd74 + workflow/scripts/solve_model/diet_stability.py: 38186fe2e56474736d9da727cd6ebb3420dd24a432391cc5da477015be0b54f4 + workflow/scripts/solve_model/food_utility.py: c12ac00a859e76d7dffa77c62fc5cb58525d92f6b886373ab49c9790692ac6a4 + workflow/scripts/solve_model/health.py: 216ff58962d5ead53b68f941c79adad79b91f60d5581e2f001e6e0850905995d + workflow/scripts/solve_model/production_stability.py: 4f238ab0f219335272a4146b118066124bf9d107dae5cc3dfe7ce89d5feabf3a + workflow/scripts/solve_model/sensitivity.py: 3ba13e457cfe34ce5ecb04c28d19d873ea6a9d4cc3c2118c3a2c4384a5bbee2a missing_inputs: [] food_waste: artefacts: data/curated/calibration/gbd-anchored/food_waste.yaml: 3e66ca8a6b477f8856b37009c93ebb2955c69c64e29ce8b93024f3645a8d61a3 code: workflow/rules/animals.smk: fa07f649a53263c151e1799f63b40c66fba42ee7858a97d51ff988c406ba0024 - workflow/rules/crops.smk: 6413ed1571fe2db7bbac9d45db8a27d51a1c2955a86b4629f43cf70da1a048b0 + workflow/rules/crops.smk: 8d7d87b61959819ae9a753126767a71a10d7463af7963bffd423fa4560f470d1 workflow/rules/diet.smk: 15db54cf636dca37bea0343c2bb236ead24ffe238dc2a843b391bbd43bfacb12 workflow/rules/geography.smk: 54b113f5647787bacea8d2a2f45298a24c605a84ced48630abece8b2dc887943 workflow/rules/luc.smk: e64fb669c0d6c40299d47c995dbb9f04a71f4d99d8edcd1fe9ce3ed700639257 - workflow/rules/model.smk: 0e52481f84031711f0706a8c54a7e1038063e24320e52609a1fd832a977aaffd + workflow/rules/model.smk: 3a0e06937f52f250e4a5a60c8805f222ff9ad1563a125d839c53c962a847e7bb workflow/rules/retrieve.smk: ecd9eb633974cd575b7a879348c763f844b3f66cdedc785c7d28977ac541a577 workflow/rules/water.smk: 9fe3fc69051df02bab7dde53d2057b2b64142c7212741f8a45bc0171447c951d workflow/scripts/aggregate_class_areas.py: 93e9a52eec4dac86eeff03fa7e574ad4bdd91bb4049f715a321850f327aba92e @@ -522,7 +549,7 @@ steps: workflow/scripts/build_fdd_area_shares.py: b6e084b1779636547c41dada16d570ec0f98d5dc34f3d4e948e6e3943e32034a workflow/scripts/build_feed_to_animal_products.py: 1eb41eaf6149524bd6c324ba39356ee09cbebe62bd97bf2e7e4520e1b14e3ba3 workflow/scripts/build_fodder_yield_corrections.py: eef62e7237a89f1f8b962893ed031758fd6abcc1b1c71140bc0c16e92e3fc568 - workflow/scripts/build_frt_area_attribution.py: f91f51757808594f87d6a3151fd228b453181586bd342930b9749a4c21973bc8 + workflow/scripts/build_frt_area_attribution.py: 9e85a1c3352270e6463212d24ecff579e5e8378c7969a22823dd5e59b16b422b workflow/scripts/build_grassland_yields.py: 38ed635e8e162d59f33fa15ba0c649046a047ae37136203de3db2fc72b135a2d workflow/scripts/build_grazing_only_land.py: 9880aea4ffe4886ba68fdbc283b009ea984cbb0fb3159754c721b02beb3eec99 workflow/scripts/build_harvested_area.py: b6abc0557ed3c68948380d920ec77102f35e47b4712f4701a40677d15c972a98 @@ -531,16 +558,16 @@ steps: workflow/scripts/build_luc_grid.py: d8a8af444d2267b1dab55f6719bf3ade019a6410e15ed3b7888cb76d7c7061d6 workflow/scripts/build_luicube_grassland_yields.py: 01d2865e3c1878fc4795075680197b161f4cb50259a2fb7f8cdcb1e3deaf2191 workflow/scripts/build_mirca_crop_calendar.py: f44617c319c76f4e1f3d68f6d2dee14866804e498d478797e2d63612d9515e4e - workflow/scripts/build_model.py: 3294bfeb27cefb28ad3406f3fc40ff05400ddc6746f9944742d16c6a97c2b16d + workflow/scripts/build_model.py: 2d814e24e2cdd28365f44b6eea31f259ea42cea90bbf58579b4bd624a2cbd4e9 workflow/scripts/build_multi_cropping.py: 6130469e316fb795e66d87fc3f9af6b8086878abba8dfe31c9b587c87478cc21 workflow/scripts/build_ooc_olive_area_share.py: 3c5d202eabc9cd997d3dc4989e9e86e672230ce2d139cc7d96a3f5ccf459bbd5 workflow/scripts/build_reforestation_mask.py: c373bb1564782ff1400d5fd717a87e67501241c5a9e09b644ea0e199a82aefa1 workflow/scripts/build_region_class_cell_mapping.py: c8a2971f2cd7d3d46107f7c6af1a1d8bc22eacec1cca80a6a58ec04da508ad74 workflow/scripts/build_region_water_aware.py: 9d6a8e8f1bf23d51d52d802c905c6460539874505546cec68d32f08a00ec2be1 - workflow/scripts/build_region_watergap.py: 93451ae9ac67fac05fe205ca5009d0854f29012893997ed50db919ddb29ed5c5 + workflow/scripts/build_region_watergap.py: 93024ff5d92eb74703d67f1216fd8b3f5a1f4721ae010f1d148c72036e93a4ea workflow/scripts/build_regions.py: 08a1f3c0247bdbe4600f2b1596396a352ff6c459496566e7e24da5b2f83558a7 workflow/scripts/build_yield_calibration.py: 1225a0d55add24ce44acc86cde5dd3335ed9d0a233ba6025bfc8c0e5afc8375d - workflow/scripts/calculate_manure_emissions.py: c35ee707e5cfda0bc1cd0aa06f31c834f118b914b47dc6478a37222f10589f94 + workflow/scripts/calculate_manure_emissions.py: 4f39f5370dcf931d4648bf7c0727a807ec7bc8fbb80561dae4ff5afa08834591 workflow/scripts/categorize_feeds.py: 575b37f430e4fbf54b8477be96f5069ce6522fa1882c2f024b9b9a25a8540140 workflow/scripts/compose_water_supply.py: c1fc61844079219f2381664b44b6a917f51ecbc07bb08e1318702985deaf9231 workflow/scripts/compute_food_waste_calibration.py: 5973b801374e00d03362fd1b2fb7df684ea28b2c0c069a1c4c51a9b93923da98 @@ -554,7 +581,7 @@ steps: workflow/scripts/download_luicube_raster.py: 7883a5a73c9c18f6afbbabe62044494657e69b49469ae7c97b4df18f8a584b2c workflow/scripts/download_mirca_os_bag_member.py: e869f4ec2f87a03b65d7c6f875d6ad393dcce647789ba7fc0f1c2d2fa2e48049 workflow/scripts/download_soilgrids_ocs.py: bcb361c0ada72cd6264685eb36b2efabc1a03bc25c93918c37da8da7fe049d58 - workflow/scripts/estimate_baseline_diet.py: 87047e7cb0db1f5ab7460eeecfacea52c7ef36802669e0aff5b8c62079e589e9 + workflow/scripts/estimate_baseline_diet.py: d9df39a6cc46b41da12059f5c38929a62e4b53301149488f89ce704cb5440336 workflow/scripts/extract_mirca_os_archive.py: 687fe1d413ea063d585cc526ff53ce7d91c1df90e1d1ec898bfc62d19890647c workflow/scripts/merge_animal_costs.py: db83828da2fad888f0bae49e3a4d19ebc8315e27d2edcd0c6fde579b736de57c workflow/scripts/merge_dietary_sources.py: b647708a56e5d7c9359f78c644020e3b67e37f50d699004fc8462ed5700031a4 @@ -562,7 +589,7 @@ steps: workflow/scripts/prepare_banana_plantain_production.py: 214cd243b0932ee9da96cf24bdd8c7c10e05c94e27c303758cc2770e0d166e3a workflow/scripts/prepare_biofuel_baseline.py: de7fa63ca68961a1334e74af63b6e23a1360fcf810fa3a815e901e89cc8710ce workflow/scripts/prepare_fao_edible_portion.py: cb71097d23dbe14d077c2a74fbd28bd13fcf039529979cd1af64db2c184a5c0e - workflow/scripts/prepare_faostat_animal_production.py: d163e7bfb272e9b542f16dcc11ebfffae4476fbe08f9bbfcb64479b2d869ac06 + workflow/scripts/prepare_faostat_animal_production.py: 38980d9bf9324ae01664c63104026aa4b3589f71f5bc592ae8f3bbe96cde9c2a workflow/scripts/prepare_faostat_crop_costs.py: be66f2aad20af7c88085b3c24e59ce2e26cfcee25b202fd96f3a47666d65ad1b workflow/scripts/prepare_faostat_crop_production.py: f446a0f22d865d6dfb7aaab643ea245932169769070b7a72ab16c98b09bf7435 workflow/scripts/prepare_faostat_fbs_items.py: 87446f863e0e26e06b863cabcaafda362fb033f86b522b519922f86b5f80bb05 @@ -574,7 +601,7 @@ steps: workflow/scripts/prepare_fiber_baseline.py: c9cdce9d70211b9171777f791f10a9fb63f34c4a2fc72b4f417a4a50468c8394 workflow/scripts/prepare_food_loss_waste.py: c2b33b5032de4fad69425f87a92109d8e6dd3164769b58cc3816e09347e42834 workflow/scripts/prepare_food_security_anchors.py: 374e9211799db8946bf589a8b14a4512b4bbb173f8227b92405b940e437ef4c7 - workflow/scripts/prepare_gbd_food_group_intake.py: 22c0d05151b9131fa8e072ac157ad6881e1d929ec0f5ddf7cc7869f2d2b35d3f + workflow/scripts/prepare_gbd_food_group_intake.py: cb1e8f52b5fbd7b42b4581cb6020a70978b4a2ab4b9684a5961c256ef4413679 workflow/scripts/prepare_gdd_ia_dietary_intake.py: c9b4fd5640e37644e6fb55285f86cd259427bbb60a2a4ef988cdcb82d7d4b41d workflow/scripts/prepare_gleam_feed_properties.py: 792a23dace16089a8a80f320a497c85a5c0aac54c6f9bac0281cec724d888358 workflow/scripts/prepare_luc_inputs.py: 910ef31cbf1c5800daffd2a086f73f9afb24f6250d2a475ce5eda4199a3d65c9 @@ -594,7 +621,7 @@ steps: workflow/scripts/solve_model.py: 8b13b5a820ba69e4385dcc0b4f576744d9759485a642ca43282c7b65861fe5cb workflow/scripts/validate_baseline_diet.py: 6d54d506a2d8382321c849d77698098429019e0f089f969c43ee2848becc05f4 config_files: - config/calibration/food_waste.yaml: d003b796f7a10db3f2cb4c8269d05e6a5c76aac0b17196e9c75dbf5c3a9755f7 + config/calibration/food_waste.yaml: 552bcc07e6fe9dfdb7de83cc7d4c19f113a8a8b61e72bd4f8a1b080498059ba7 inputs: data/bundled/doi_10_5061_dryad_2rbnzs7qh__v20250311/FUBC_1_to_9_data.csv: 3b5dc29b6e2f6844807f2983c1596c28a127f48a67f7deec7e36f6a49c0b17f3 data/bundled/gleam3/feed_items_categories.xlsx: b2f5f6a8dd86648c6b1a34100dfb6531aacc1c65865d2e8c4eac3a384776de9a @@ -603,7 +630,6 @@ steps: data/bundled/gleam3/production.csv: eb85e82ba9a61c71c6cd33ab36c00b5d844f2550e1caa45b6b250410adc6f2b5 data/curated/M49-codes.csv: 10ae52e639e62f07ce992ead08536167d0c8aa9f467870dbfcfbf465ef3aa9be data/curated/biogas_crop_demand.csv: 8371d2ef0d3170f4ee145b0b0fd7a1ab4e63eec87febb78ca5574866b58cff71 - data/curated/calibration/gbd-anchored/deviation_penalty.yaml: 783dc46e38dc0fa21546ffa0e3d6e0b93a16c250f7fb7e8ad650f6d1ef28c351 data/curated/calibration/gbd-anchored/exogenous_feed.csv: a42d3bdc2ba32d535fa50f2ba496240fa774fc9014f3b565aedf976934304fb1 data/curated/calibration/gbd-anchored/exogenous_forage.csv: c059074f0f18be9709ada5f6c231869047675f72b1caa7eaef7d5e14c5976875 data/curated/calibration/gbd-anchored/fodder_conversion.csv: f46d89574830cefba376f9fdb86c0ae4462bdaf9889dcc25d8c15b0da1524458 @@ -650,31 +676,41 @@ steps: data/manually_downloaded/IHME-GBD_2023-death-rates-2020.csv: 8e0678a115b4f1a49cb5f0ed09eca8f20273ae5c7e066173afe06426740d9f9a data/manually_downloaded/IHME_GBD_2023_RISK_EXPOSURE_DIET_1: 7792dd5bf6873bd8657c2c1f99936f6b1111a357a0de3163ca7f01d696d387ef data/manually_downloaded/IHME_GBD_2023_RISK_EXPOSURE_DIET_2: e217ce5893f9041c6ff721c976b2905018e3434097282d41d41f71b9628a33be + workflow/scripts/build_model/__init__.py: 79735b7695e60ebf84e52bd91374505a357e4492f2bf80936bb00f76ffc4a7f7 workflow/scripts/build_model/animals.py: 030c2dd4b459fb856e7dc34c9dd74fe9245a340eca9055b19a6d6bf01a910f29 - workflow/scripts/build_model/biomass.py: 78059ea9d2fb953c5890dfb789b4215373a095a087d3e888cff1fa75d04e034f + workflow/scripts/build_model/biomass.py: 39bdbf6eb4d76e95cf9ce1a31a77c2b1382c1cb63dc728d5ac6f416393520f38 + workflow/scripts/build_model/commodity_costs.py: 97a4c3aa148355adac88d7a45462158f55a7322a0c351babd0a243bd941eb0e2 workflow/scripts/build_model/crops.py: 4b8638d8902b0a688d0ab55df3e3625d0953f3b4ac63886ddae50b3bf47b4610 workflow/scripts/build_model/food.py: 9e53b6c847202a2192ea0e014746e62a9a5f88eedffc5a48833fc4186ef65ae9 - workflow/scripts/build_model/grassland.py: c3ee3ae3149137e8ab427f0b5584251b9c49baac821e92f318cca816df171f48 + workflow/scripts/build_model/grassland.py: bf39536ad916a0c7a47d72fe2de4171fd256e483b81ac552d4403fe0123036da workflow/scripts/build_model/health.py: 5ddc8cbae98992f67140db787946a0f9fd9ae15ad683592b4f81b4bf6a2df702 workflow/scripts/build_model/infrastructure.py: b792d568d0f199699f5d53bc6f175138a899e41a71f86b5d72a037de1130785c - workflow/scripts/build_model/land.py: 160b8d97dfaaadcaeef4bc8efa3ebcd55ea8ad0aaf9469cc1387b4b0687f4422 + workflow/scripts/build_model/irrigation.py: 3d1d6216069eb7854046266a68b202b1f4c981395c499f8d05ab04c22f5645c2 + workflow/scripts/build_model/land.py: 8b1958b5791ec671df4621d873b2476d7aee69f3418b6c601b1036bdde87d11b workflow/scripts/build_model/nutrition.py: e94986ded9c4569cc1f3b264c352a1f7f7f72d0c3b107f2aed2ad5f44e1b875c workflow/scripts/build_model/primary_resources.py: 133c60f613ad9d758063511607d068a9e7fba04a726cc9fb714e83d9b6ae882c - workflow/scripts/build_model/trade.py: 0fa403447f9f3013fb9efd35f48b7d33044d9a5abca1bc2fe2c05460f077992a + workflow/scripts/build_model/trade.py: ef2649814994573c476eb02258b8d20b8393a5e9087906360c74cfa1412904a5 workflow/scripts/build_model/utils.py: 46fee1344183d1d2fa798b0d92ac63f3aba5989c462d0b92946bf8a83fcbee43 workflow/scripts/constants.py: ab1f55cfb14ae63171047643c634101962abdeab3b410624ad47570871268296 + workflow/scripts/solve_model/__init__.py: 23fb1fde8c5d964c8fda94020ff41ce9fdeefd04f6334a1ab3e7e755c93af04c + workflow/scripts/solve_model/core.py: 71cd673487e6475fa128fdd448e1a251d89ee1ebfc4b882f021a447acb71fd74 + workflow/scripts/solve_model/diet_stability.py: 38186fe2e56474736d9da727cd6ebb3420dd24a432391cc5da477015be0b54f4 + workflow/scripts/solve_model/food_utility.py: c12ac00a859e76d7dffa77c62fc5cb58525d92f6b886373ab49c9790692ac6a4 + workflow/scripts/solve_model/health.py: 216ff58962d5ead53b68f941c79adad79b91f60d5581e2f001e6e0850905995d + workflow/scripts/solve_model/production_stability.py: 4f238ab0f219335272a4146b118066124bf9d107dae5cc3dfe7ce89d5feabf3a + workflow/scripts/solve_model/sensitivity.py: 3ba13e457cfe34ce5ecb04c28d19d873ea6a9d4cc3c2118c3a2c4384a5bbee2a missing_inputs: [] stability: artefacts: - data/curated/calibration/gbd-anchored/deviation_penalty.yaml: 783dc46e38dc0fa21546ffa0e3d6e0b93a16c250f7fb7e8ad650f6d1ef28c351 + data/curated/calibration/gbd-anchored/deviation_penalty.yaml: b413ab3e6e8cbee522b61b47a4523627050aed8a430ba631982be7b17b72e583 code: workflow/rules/animals.smk: fa07f649a53263c151e1799f63b40c66fba42ee7858a97d51ff988c406ba0024 - workflow/rules/crops.smk: 6413ed1571fe2db7bbac9d45db8a27d51a1c2955a86b4629f43cf70da1a048b0 + workflow/rules/crops.smk: 8d7d87b61959819ae9a753126767a71a10d7463af7963bffd423fa4560f470d1 workflow/rules/deviation_penalty.smk: 4c6b2723520befa5a4bfc54e40ff5e93c27e2234a1762b6f63b311de3ed78209 workflow/rules/diet.smk: 15db54cf636dca37bea0343c2bb236ead24ffe238dc2a843b391bbd43bfacb12 workflow/rules/geography.smk: 54b113f5647787bacea8d2a2f45298a24c605a84ced48630abece8b2dc887943 workflow/rules/luc.smk: e64fb669c0d6c40299d47c995dbb9f04a71f4d99d8edcd1fe9ce3ed700639257 - workflow/rules/model.smk: 0e52481f84031711f0706a8c54a7e1038063e24320e52609a1fd832a977aaffd + workflow/rules/model.smk: 3a0e06937f52f250e4a5a60c8805f222ff9ad1563a125d839c53c962a847e7bb workflow/rules/retrieve.smk: ecd9eb633974cd575b7a879348c763f844b3f66cdedc785c7d28977ac541a577 workflow/rules/water.smk: 9fe3fc69051df02bab7dde53d2057b2b64142c7212741f8a45bc0171447c951d workflow/scripts/aggregate_class_areas.py: 93e9a52eec4dac86eeff03fa7e574ad4bdd91bb4049f715a321850f327aba92e @@ -686,7 +722,7 @@ steps: workflow/scripts/build_fdd_area_shares.py: b6e084b1779636547c41dada16d570ec0f98d5dc34f3d4e948e6e3943e32034a workflow/scripts/build_feed_to_animal_products.py: 1eb41eaf6149524bd6c324ba39356ee09cbebe62bd97bf2e7e4520e1b14e3ba3 workflow/scripts/build_fodder_yield_corrections.py: eef62e7237a89f1f8b962893ed031758fd6abcc1b1c71140bc0c16e92e3fc568 - workflow/scripts/build_frt_area_attribution.py: f91f51757808594f87d6a3151fd228b453181586bd342930b9749a4c21973bc8 + workflow/scripts/build_frt_area_attribution.py: 9e85a1c3352270e6463212d24ecff579e5e8378c7969a22823dd5e59b16b422b workflow/scripts/build_grassland_yields.py: 38ed635e8e162d59f33fa15ba0c649046a047ae37136203de3db2fc72b135a2d workflow/scripts/build_grazing_only_land.py: 9880aea4ffe4886ba68fdbc283b009ea984cbb0fb3159754c721b02beb3eec99 workflow/scripts/build_harvested_area.py: b6abc0557ed3c68948380d920ec77102f35e47b4712f4701a40677d15c972a98 @@ -695,17 +731,17 @@ steps: workflow/scripts/build_luc_grid.py: d8a8af444d2267b1dab55f6719bf3ade019a6410e15ed3b7888cb76d7c7061d6 workflow/scripts/build_luicube_grassland_yields.py: 01d2865e3c1878fc4795075680197b161f4cb50259a2fb7f8cdcb1e3deaf2191 workflow/scripts/build_mirca_crop_calendar.py: f44617c319c76f4e1f3d68f6d2dee14866804e498d478797e2d63612d9515e4e - workflow/scripts/build_model.py: 3294bfeb27cefb28ad3406f3fc40ff05400ddc6746f9944742d16c6a97c2b16d + workflow/scripts/build_model.py: 2d814e24e2cdd28365f44b6eea31f259ea42cea90bbf58579b4bd624a2cbd4e9 workflow/scripts/build_multi_cropping.py: 6130469e316fb795e66d87fc3f9af6b8086878abba8dfe31c9b587c87478cc21 workflow/scripts/build_ooc_olive_area_share.py: 3c5d202eabc9cd997d3dc4989e9e86e672230ce2d139cc7d96a3f5ccf459bbd5 workflow/scripts/build_reforestation_mask.py: c373bb1564782ff1400d5fd717a87e67501241c5a9e09b644ea0e199a82aefa1 workflow/scripts/build_region_class_cell_mapping.py: c8a2971f2cd7d3d46107f7c6af1a1d8bc22eacec1cca80a6a58ec04da508ad74 workflow/scripts/build_region_water_aware.py: 9d6a8e8f1bf23d51d52d802c905c6460539874505546cec68d32f08a00ec2be1 - workflow/scripts/build_region_watergap.py: 93451ae9ac67fac05fe205ca5009d0854f29012893997ed50db919ddb29ed5c5 + workflow/scripts/build_region_watergap.py: 93024ff5d92eb74703d67f1216fd8b3f5a1f4721ae010f1d148c72036e93a4ea workflow/scripts/build_regions.py: 08a1f3c0247bdbe4600f2b1596396a352ff6c459496566e7e24da5b2f83558a7 workflow/scripts/build_yield_calibration.py: 1225a0d55add24ce44acc86cde5dd3335ed9d0a233ba6025bfc8c0e5afc8375d - workflow/scripts/calculate_manure_emissions.py: c35ee707e5cfda0bc1cd0aa06f31c834f118b914b47dc6478a37222f10589f94 - workflow/scripts/calibrate_deviation_penalty.py: ab82cb7c0d206581c7ed3a85c473a9063e5bb64c1072d26aec247789e7ee63eb + workflow/scripts/calculate_manure_emissions.py: 4f39f5370dcf931d4648bf7c0727a807ec7bc8fbb80561dae4ff5afa08834591 + workflow/scripts/calibrate_deviation_penalty.py: fe674bb0ada6ca8676d202693b05cc7e6410380dd0c40634799d1a24852db02b workflow/scripts/categorize_feeds.py: 575b37f430e4fbf54b8477be96f5069ce6522fa1882c2f024b9b9a25a8540140 workflow/scripts/compose_water_supply.py: c1fc61844079219f2381664b44b6a917f51ecbc07bb08e1318702985deaf9231 workflow/scripts/compute_gleam3_feed_fractions.py: 83cc4268fe7f1762932ac63fc7f05ecedda9b03bcc1b502a69d85ec6779e6289 @@ -718,7 +754,7 @@ steps: workflow/scripts/download_luicube_raster.py: 7883a5a73c9c18f6afbbabe62044494657e69b49469ae7c97b4df18f8a584b2c workflow/scripts/download_mirca_os_bag_member.py: e869f4ec2f87a03b65d7c6f875d6ad393dcce647789ba7fc0f1c2d2fa2e48049 workflow/scripts/download_soilgrids_ocs.py: bcb361c0ada72cd6264685eb36b2efabc1a03bc25c93918c37da8da7fe049d58 - workflow/scripts/estimate_baseline_diet.py: 87047e7cb0db1f5ab7460eeecfacea52c7ef36802669e0aff5b8c62079e589e9 + workflow/scripts/estimate_baseline_diet.py: d9df39a6cc46b41da12059f5c38929a62e4b53301149488f89ce704cb5440336 workflow/scripts/extract_mirca_os_archive.py: 687fe1d413ea063d585cc526ff53ce7d91c1df90e1d1ec898bfc62d19890647c workflow/scripts/merge_animal_costs.py: db83828da2fad888f0bae49e3a4d19ebc8315e27d2edcd0c6fde579b736de57c workflow/scripts/merge_dietary_sources.py: b647708a56e5d7c9359f78c644020e3b67e37f50d699004fc8462ed5700031a4 @@ -726,7 +762,7 @@ steps: workflow/scripts/prepare_banana_plantain_production.py: 214cd243b0932ee9da96cf24bdd8c7c10e05c94e27c303758cc2770e0d166e3a workflow/scripts/prepare_biofuel_baseline.py: de7fa63ca68961a1334e74af63b6e23a1360fcf810fa3a815e901e89cc8710ce workflow/scripts/prepare_fao_edible_portion.py: cb71097d23dbe14d077c2a74fbd28bd13fcf039529979cd1af64db2c184a5c0e - workflow/scripts/prepare_faostat_animal_production.py: d163e7bfb272e9b542f16dcc11ebfffae4476fbe08f9bbfcb64479b2d869ac06 + workflow/scripts/prepare_faostat_animal_production.py: 38980d9bf9324ae01664c63104026aa4b3589f71f5bc592ae8f3bbe96cde9c2a workflow/scripts/prepare_faostat_crop_costs.py: be66f2aad20af7c88085b3c24e59ce2e26cfcee25b202fd96f3a47666d65ad1b workflow/scripts/prepare_faostat_crop_production.py: f446a0f22d865d6dfb7aaab643ea245932169769070b7a72ab16c98b09bf7435 workflow/scripts/prepare_faostat_fbs_items.py: 87446f863e0e26e06b863cabcaafda362fb033f86b522b519922f86b5f80bb05 @@ -738,7 +774,7 @@ steps: workflow/scripts/prepare_fiber_baseline.py: c9cdce9d70211b9171777f791f10a9fb63f34c4a2fc72b4f417a4a50468c8394 workflow/scripts/prepare_food_loss_waste.py: c2b33b5032de4fad69425f87a92109d8e6dd3164769b58cc3816e09347e42834 workflow/scripts/prepare_food_security_anchors.py: 374e9211799db8946bf589a8b14a4512b4bbb173f8227b92405b940e437ef4c7 - workflow/scripts/prepare_gbd_food_group_intake.py: 22c0d05151b9131fa8e072ac157ad6881e1d929ec0f5ddf7cc7869f2d2b35d3f + workflow/scripts/prepare_gbd_food_group_intake.py: cb1e8f52b5fbd7b42b4581cb6020a70978b4a2ab4b9684a5961c256ef4413679 workflow/scripts/prepare_gdd_ia_dietary_intake.py: c9b4fd5640e37644e6fb55285f86cd259427bbb60a2a4ef988cdcb82d7d4b41d workflow/scripts/prepare_gleam_feed_properties.py: 792a23dace16089a8a80f320a497c85a5c0aac54c6f9bac0281cec724d888358 workflow/scripts/prepare_luc_inputs.py: 910ef31cbf1c5800daffd2a086f73f9afb24f6250d2a475ce5eda4199a3d65c9 @@ -818,17 +854,20 @@ steps: data/manually_downloaded/IHME-GBD_2023-death-rates-2020.csv: 8e0678a115b4f1a49cb5f0ed09eca8f20273ae5c7e066173afe06426740d9f9a data/manually_downloaded/IHME_GBD_2023_RISK_EXPOSURE_DIET_1: 7792dd5bf6873bd8657c2c1f99936f6b1111a357a0de3163ca7f01d696d387ef data/manually_downloaded/IHME_GBD_2023_RISK_EXPOSURE_DIET_2: e217ce5893f9041c6ff721c976b2905018e3434097282d41d41f71b9628a33be + workflow/scripts/build_model/__init__.py: 79735b7695e60ebf84e52bd91374505a357e4492f2bf80936bb00f76ffc4a7f7 workflow/scripts/build_model/animals.py: 030c2dd4b459fb856e7dc34c9dd74fe9245a340eca9055b19a6d6bf01a910f29 - workflow/scripts/build_model/biomass.py: 78059ea9d2fb953c5890dfb789b4215373a095a087d3e888cff1fa75d04e034f + workflow/scripts/build_model/biomass.py: 39bdbf6eb4d76e95cf9ce1a31a77c2b1382c1cb63dc728d5ac6f416393520f38 + workflow/scripts/build_model/commodity_costs.py: 97a4c3aa148355adac88d7a45462158f55a7322a0c351babd0a243bd941eb0e2 workflow/scripts/build_model/crops.py: 4b8638d8902b0a688d0ab55df3e3625d0953f3b4ac63886ddae50b3bf47b4610 workflow/scripts/build_model/food.py: 9e53b6c847202a2192ea0e014746e62a9a5f88eedffc5a48833fc4186ef65ae9 - workflow/scripts/build_model/grassland.py: c3ee3ae3149137e8ab427f0b5584251b9c49baac821e92f318cca816df171f48 + workflow/scripts/build_model/grassland.py: bf39536ad916a0c7a47d72fe2de4171fd256e483b81ac552d4403fe0123036da workflow/scripts/build_model/health.py: 5ddc8cbae98992f67140db787946a0f9fd9ae15ad683592b4f81b4bf6a2df702 workflow/scripts/build_model/infrastructure.py: b792d568d0f199699f5d53bc6f175138a899e41a71f86b5d72a037de1130785c - workflow/scripts/build_model/land.py: 160b8d97dfaaadcaeef4bc8efa3ebcd55ea8ad0aaf9469cc1387b4b0687f4422 + workflow/scripts/build_model/irrigation.py: 3d1d6216069eb7854046266a68b202b1f4c981395c499f8d05ab04c22f5645c2 + workflow/scripts/build_model/land.py: 8b1958b5791ec671df4621d873b2476d7aee69f3418b6c601b1036bdde87d11b workflow/scripts/build_model/nutrition.py: e94986ded9c4569cc1f3b264c352a1f7f7f72d0c3b107f2aed2ad5f44e1b875c workflow/scripts/build_model/primary_resources.py: 133c60f613ad9d758063511607d068a9e7fba04a726cc9fb714e83d9b6ae882c - workflow/scripts/build_model/trade.py: 0fa403447f9f3013fb9efd35f48b7d33044d9a5abca1bc2fe2c05460f077992a + workflow/scripts/build_model/trade.py: ef2649814994573c476eb02258b8d20b8393a5e9087906360c74cfa1412904a5 workflow/scripts/build_model/utils.py: 46fee1344183d1d2fa798b0d92ac63f3aba5989c462d0b92946bf8a83fcbee43 workflow/scripts/constants.py: ab1f55cfb14ae63171047643c634101962abdeab3b410624ad47570871268296 missing_inputs: [] diff --git a/data/curated/calibration/gbd-anchored/provenance.yaml b/data/curated/calibration/gbd-anchored/provenance.yaml index 95459eb8..308663d9 100644 --- a/data/curated/calibration/gbd-anchored/provenance.yaml +++ b/data/curated/calibration/gbd-anchored/provenance.yaml @@ -4,8 +4,8 @@ # tools/calibrate; do not edit by hand. # Licensing: see the annotation in REUSE.toml. base_config: config/gsa.yaml -generated_at: '2026-07-28T18:00:37+00:00' -git_commit: e62c3a149e0bc4a9b103ae49c6af12b9e62a254f +generated_at: '2026-07-28T22:30:03+00:00' +git_commit: 53225fd85a4fa4ec491f92515226a9d09f790073 source: gbd-anchored structural_config: aggregation.irrigated_area_source: current diff --git a/workflow/rules/common.smk b/workflow/rules/common.smk index fe13ea06..6cc87e3a 100644 --- a/workflow/rules/common.smk +++ b/workflow/rules/common.smk @@ -327,9 +327,16 @@ def calibration_artefact_inputs(cfg): if fd_cal_cfg["enabled"]: inputs["food_demand_calibration"] = fd_cal_cfg["calibration_file"] + # Mirrors the solve's own gate: the sentinel is resolved only for an + # enabled L1 penalty, so anything else never opens the file. dp_cfg = cfg["deviation_penalty"] dp_cal_cfg = dp_cfg["calibration"] - if dp_cal_cfg["enabled"] and deviation_penalty_uses_calibrated(dp_cfg): + if ( + dp_cal_cfg["enabled"] + and dp_cfg["enabled"] + and dp_cfg["penalty_mode"] == "l1" + and deviation_penalty_uses_calibrated(dp_cfg) + ): inputs["deviation_penalty_calibration"] = dp_cal_cfg["calibrated_yaml"] return inputs