Skip to content

Fix estimation for sequestration potentials#2086

Open
toniseibold wants to merge 7 commits into
masterfrom
fix_sequ_potentials
Open

Fix estimation for sequestration potentials#2086
toniseibold wants to merge 7 commits into
masterfrom
fix_sequ_potentials

Conversation

@toniseibold

@toniseibold toniseibold commented Feb 19, 2026

Copy link
Copy Markdown
Contributor

Ensuring that the optimistic sequestration potential is equal or greater than the neutral estimation. In raw data e.g. data/CO2JRC_OpenFormats/CO2Stop_DataInterrogationSystem/Hydrocarbon_Traps.csv optimistic assumption is zero in some cases while neutral estimations are > 0.

Removing "conservative estimate Mt" from config since this leads to double counting of the sequestration potential in rule build_clustered_co2_sequestration_potentials.

  • before: total sequestration potential of 89,982 Mt
  • after: total sequestration potential of 16,227 Mt

Checklist

  • I tested my contribution locally and it works as intended.
  • Code and workflow changes are sufficiently documented. not applicable
  • Changed dependencies are added to pixi.toml (using pixi add <dependency-name>). not_applicable
  • Changes in configuration options are added in config/config.default.yaml.
  • Changes in configuration options are documented in doc/configtables/*.csv. not applicable
  • For new data sources or versions, these instructions have been followed. not applicable
  • A release note doc/release_notes.rst is added. not applicable

toniseibold and others added 2 commits February 19, 2026 15:28
@toniseibold toniseibold requested a review from bobbyxng February 19, 2026 14:50
@fneum fneum requested a review from lisazeyen February 27, 2026 09:31
@fneum

fneum commented Feb 27, 2026

Copy link
Copy Markdown
Member

@lisazeyen, if you have a moment, could you say whether that's correct? I think you once mentioned something specific about the accounting of the sequestration potentials.

@lisazeyen

lisazeyen commented Feb 27, 2026

Copy link
Copy Markdown
Contributor

I think we only considered high-density storage so far. But I am not sure if there is some double counting. I am currently on holidays until the 8/3 does this have some time? Then I could look at my notes at home. In my PhD thesis I wrote different numbers (total sequestration 18 Gt: 9 Gt gas, 5Gt oil, 4 Gt aquifer) and I am not sure where the mismatch is coming from, is it including onshore?

Screenshot_20260227-225332.png

@fneum

fneum commented May 4, 2026

Copy link
Copy Markdown
Member

@lisazeyen, I'm unsure how to judge this. Maybe you have the chance to have a look at your notes in the upcoming days?


gdf = merge_maps(traps_map, storage_map)

types = [" OIL", " GAS", " aquifer", ""]

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It should be either just the high-density storage or the conservative storage potential

Suggested change
types = [" OIL", " GAS", " aquifer", ""]
types = [" OIL", " GAS", " aquifer"]

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, @lisazeyen! I agree with the change.

@lisazeyen

Copy link
Copy Markdown
Contributor

@fneum @toniseibold sorry for the late reply.

One should include just one of the two: either the conservative estimation or only consider the high-density storage (gas, oil, aquifer). We actually already discussed this in this PR.

I would recommend to use only high-density storage because this is where most projects are planned. @toniseibold I still wonder why the numbers are slightly different in my PhD thesis compared to what is in the PR description, but might be just that I rounded the numbers.

@fneum fneum left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sounds good. Thanks @lisazeyen for checking (again)!

@toniseibold, I would avoid the .max(axis=1) hotfix if possible. See comment below.

Comment thread scripts/build_co2_sequestration_potentials.py Outdated

gdf = merge_maps(traps_map, storage_map)

types = [" OIL", " GAS", " aquifer", ""]

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, @lisazeyen! I agree with the change.

Copilot AI review requested due to automatic review settings July 2, 2026 12:10

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adjusts the default configuration for computing clustered regional CO₂ sequestration potentials to avoid double-counting by removing the aggregated "conservative estimate Mt" column from the default attribute list.

Changes:

  • Removed "conservative estimate Mt" from the default sector.regional_co2_sequestration_potential.attribute list in both the config schema/model and config.default.yaml.
  • Updated validation defaults so the schema-backed defaults match the updated configuration.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.

File Description
scripts/lib/validation/config/sector.py Updates the SectorConfig default for regional_co2_sequestration_potential.attribute by removing "conservative estimate Mt".
config/config.default.yaml Updates the default user-facing config to match the new attribute list (no "conservative estimate Mt").
Comments suppressed due to low confidence (1)

scripts/lib/validation/config/sector.py:712

  • With this default change, regional_co2_sequestration_potential.attribute now points only to the component columns (GAS/OIL/aquifer). In build_co2_sequestration_potentials.merge_maps, storage-unit features are padded with zeros for missing columns, so storage-unit geometries will have 0 for these component columns and will be filtered out by build_clustered_co2_sequestration_potentials.allocate_sequestration_potential (sum of attrs must exceed min_size). Please confirm this is intended; if storage units should still contribute to the clustered potential, the default should likely include a column that exists for storage units (e.g. conservative estimate Mt) or the clustering script should be adjusted to avoid double-counting while still including storage units.
    regional_co2_sequestration_potential: dict[str, Any] = Field(
        default_factory=lambda: {
            "enable": True,
            "attribute": [
                "conservative estimate GAS Mt",
                "conservative estimate OIL Mt",
                "conservative estimate aquifer Mt",
            ],

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines 851 to 856
regional_co2_sequestration_potential:
enable: true
attribute:
- conservative estimate Mt
- conservative estimate GAS Mt
- conservative estimate OIL Mt
- conservative estimate aquifer Mt
@toniseibold

Copy link
Copy Markdown
Contributor Author

Thanks for taking a look @lisazeyen.
I think the description of the config was leading me in the wrong direction thinking that conservative estimate Mt is a summary of [conservative estimate GAS Mt, conservative estimate OIL Mt, conservative estimate aquifer Mt].

I revert most of my proposed changes and added an explanation in sector.py.
What's also worth noting is, that including conservative estimate Mt leads to some distinct changes in model results. Especially in myopic runs, it becomes attractive to build DAC in Spain/Italy and sequester CO2 to offset emissions in the rest of Europe.

@toniseibold toniseibold requested a review from fneum July 2, 2026 12:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants