PyPSA / PyPSA/powerplantmatching
OPSD: backup URL drops efficiency column; energy_source_level_3 (biomass co-firing) unused
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 227
- Forks
- 74
- Avg merge
- 6d 17h
- Merged PRs (30d)
- 4
Description
Summary
Two data quality improvements for the OPSD EU loader:
energy_source_level_3(biomass co-firing) is loaded but silently dropped — OPSD uses this field to flag plants with partial biomass co-firing, but the loader discards it before it can influenceFueltype.- Efficiency gaps for EU plants — the OPSD EU dataset does not include efficiency estimates (unlike OPSD DE which has
efficiency_estimate). Cross-referencing with TenneT operator declarations shows that efficiency data is available for most EU thermal plants but has no path into PPM. This could be addressed by computing efficiency estimates from available metadata (fuel type, technology, commissioning year) similar to how OPSD DE derivesefficiency_estimate.
1. Biomass co-firing (energy_source_level_3) not used
Root cause
The OPSD EU dataset uses a three-level energy source hierarchy. energy_source_level_3 flags biomass co-firing in plants whose primary fuel is coal or waste:
| Plant | energy_source |
energy_source_level_3 |
|---|---|---|
| Eemshavencentrale EM1/EM2 (RWE, 2×780 MW) | Hard coal | Biomass and biogas |
| Amercentrale A9 (540 MW) | Biomass and biogas | — (already correct at level 1) |
The backup CSV at pypsa-meets-earth/ppm-data-backup does include this column, so the data is available. However, data.py drops it via .reindex(columns=config["target_columns"]) before it can influence Fueltype. As a result, plants like Eemshavencentrale are labelled pure Hard Coal in the final dataset.
Proposed fix
In data.py, use energy_source_level_3 to enrich Fueltype where it indicates biomass co-firing:
opsd_EU = (
opsd_EU.rename(columns=str.title)
.rename(columns=EU_RENAME_COLUMNS)
...
.assign(
Fueltype=lambda d: d["Energy_Source_Level_3"]
.where(d["Energy_Source_Level_3"].notna(), d["Fueltype"])
)
.reindex(columns=config["target_columns"])
)
2. Missing efficiency for EU plants
Context
The OPSD DE dataset includes efficiency_estimate (derived from fuel type, technology, and commissioning year) and PPM already maps it via "Efficiency_Estimate": "Efficiency" in data.py.
The OPSD EU dataset does not include efficiency estimates — neither the official release at data.open-power-system-data.org/conventional_power_plants/2020-10-01/ nor the backup CSV. This means EU plants sourced from OPSD arrive with Efficiency = NaN.
Cross-referencing against TenneT operator declarations for the Netherlands, 50 out of 64 matched thermal plants have no efficiency in the final powerplants.csv, despite physically reasonable values being available (e.g. 0.55–0.59 for modern CCGTs).
Possible approaches
- Apply the same estimation logic used for OPSD DE — derive
efficiency_estimatefrom fuel type, technology, and commissioning year using the same methodology that OPSD'smain.ipynbuses for DE plants - Cross-reference with ENTSOE transparency platform — some TSOs publish efficiency or heat rate data
- Accept efficiency contributions — allow curated efficiency values to be submitted (e.g. via a supplementary CSV)
This is a broader question and may warrant separate discussion.
Impact
The biomass co-firing fix (point 1) is a straightforward ~5-line change in data.py that benefits all EU countries. The efficiency gap (point 2) is more involved but affects any model using powerplants.csv for dispatch or techno-economic analysis.
Related
- #287 — EIC-first matching (architectural improvement to prevent co-located plant confusion)
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start in data.py, tracing the OPSD EU loader through its column renaming and target-column selection, then compare it with the OPSD DE efficiency mapping and the estimation logic described in main.ipynb. Review the OPSD EU backup CSV for energy_source_level_3 and confirm the resulting values in powerplants.csv. Done means the biomass co-firing data is retained and the efficiency approach is resolved and reflected consistently.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- data-engineering
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100