Repository navigation
Conversation
The Norwegian zones were derived when carbon_intensity_per_source.json had no biomass or waste factor, so their ENTSO-E Waste and Biomass generation was carried in the denominator at 0. The table now has biomass = waste = 230, so the four zones that contain those types are recomputed with the same pipeline and the same 2025 ENTSO-E A75 extract: NO1 26.0 -> 27.0 NO2 27.0 -> 27.3 NO3 25.8 -> 26.0 NO5 26.6 -> 27.4 NO4 and SE1-SE4 carry no Waste or Biomass in the extract and are unchanged. Adds a test that fails when a zone still lists as uncovered a production type that the factor table now prices.
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
#1260 derived the NO1–NO5 and SE1–SE4 values in
nordic_emissions.jsonagainstcarbon_intensity_per_source.jsonas it was then. That table had no biomass or waste factor, so ENTSO-EWasteandBiomassgeneration stayed in the denominator at factor 0, as the file'smethodfield says.#1446 added
biomass = biofuel = waste = 230. Four Norwegian zones contain ENTSO-EWaste(NO1 also a trace ofBiomass), so they were still pricing that generation at 0. This PR recomputes them. Nothing else changes: same pipeline, same full-year 2025 ENTSO-E A75 extract, same rule for the types that still have no factor (Other,Other renewable).OtheruncoveredThe arithmetic
The denominator is the zone's total generation either way, so only the numerator moves. The change per zone is the Waste (+ Biomass) energy share times 230:
As a control, the run first reproduces the nine values shipped in #1260 bit for bit, then changes only the two factors. The two runs drop the same intervals, so only the factors differ. NO3 moves above the table's 26 hydro/wind floor; SE1, SE2 and SE4 stay below it because their Other share is still unpriced.
Test
test_nordic_zones_count_no_factored_type_as_uncoveredreads each zone'scoveragefield and fails if a type listed there as uncovered now has a factor incarbon_intensity_per_source.json. Onmasterit fails with['NO1: Waste', 'NO1: Biomass', 'NO2: Waste', 'NO3: Waste', 'NO5: Waste']; with this PR it passes. The point is that the next factor added to the table can't silently go stale in this file again.pytest tests/test_emissions.py tests/test_package_integrity.py: 48 passed.Open questions for you
Other. SE4's note already says its 14.95%Otheris mostly biomass/waste CHP. I have not mappedOtherto 230: ENTSO-E reports it as unclassified, and pricing it as biomass would be a guess about its content. With fix: add biomass, biofuel and waste factors to carbon_intensity_per_source #1446 in place it would be a one-line change if you'd rather do that; SE4 would move from 24.7 to roughly 59. Happy to leave as is.provenancestill names the Khepri v1.3 record. The 2025 extract and method are unchanged; only the two factors differ. I've recorded the recomputation innotesrather than rewriting the provenance string, but I can point it at a new archived run if you prefer.biofuelhas no ENTSO-E production type, so it doesn't enter these zones.AI disclosure: implemented with Claude Code.