⚡️ supplyforge
supplyforge is a Python package that implements a reproducible Snakemake workflow to generate country-level
datasets describing the electricity supply side for power system analysis and planning.
It is the companion package to demandforge, which focuses on demand projection.
🌍 Overview
The goal of supplyforge is to build a consistent and transparent data foundation describing the generation infrastructure and resources of European electricity systems.
The workflow integrates data obtained primarily from ENTSO-E (the European Network of Transmission System Operators for Electricity), including:
- 🏭 Installed capacity by technology (nuclear, gas, hydro, wind, solar, etc.)
- ⚙️ Availability profiles by technology and country
- 💧 Hydro inflows and reservoir information
- 🌦️ Renewable resource time series (when available)
- 📊 Aggregated country-level summaries ready for power system modeling tools
🧩 Features
- Automated data retrieval from ENTSO-E public APIs and datasets
- Harmonized technology classification across countries
- Computation of availability and inflow time series for each technology
- Generation of validated, ready-to-use datasets for scenario analysis and planning models
- Full traceability and reproducibility via Snakemake
🔗 Relation to demandforge
| Package | Focus | Description |
|---|---|---|
| demandforge | Demand | Creates projected electricity load curves for future scenarios |
| supplyforge | Supply | Builds datasets describing generation capacity, availability, and inflows |
Together, these tools provide a complete data pipeline for future electricity system modeling at the national scale.
⚙️ Workflow
supplyforge uses a modular Snakemake workflow with well-defined stages:
- Download — fetch data from ENTSO-E and other sources
- Preprocess — clean and align generation technology data
- Compute — derive availability, inflow, and capacity time series
- Aggregate — generate standardized outputs for modeling tools
Each rule is designed for transparency, reproducibility, and easy extension to new datasets.
🧱 Outputs
Typical outputs include:
| Output file | Description |
|---|---|
installed_capacity.csv |
Installed capacity by country and technology |
availability_profiles.parquet |
Hourly availability by technology |
hydro_inflows.parquet |
Hourly inflow series for hydro reservoirs |
metadata.yaml |
Documentation of data sources and processing steps |
📦 Installation
pip install supplyforge
or from source:
git clone https://git.persee.minesparis.psl.eu/energy-alternatives/supplyforge.git
cd supplyforge
pip install -e .
🚀 Usage
You can run the Snakemake workflow with:
snakemake --cores all
This will download raw data, process it, and generate the final datasets under the output/ directory.
📚 Data Sources
- ENTSO-E Transparency Platform — generation, availability, and inflows
- ENTSO-E Statistical Factsheets — installed capacities
- Optional integration with renewable resource datasets for solar/wind availability
All datasets are open or publicly accessible, and sources are documented in the workflow metadata.
🧑💻 Contributing
Contributions are welcome!
You can:
- Add support for additional data sources or countries
- Improve technology mappings or validation checks
- Extend workflow outputs for specific modeling frameworks
📄 License
Licensed under the MIT License.
✉️ Contact
For questions, suggestions, or collaboration opportunities, please contact:
[Your Name] – [your.email@domain]
or open an issue on the Gitlab repository.
Metadata
Release files for supplyforge 0.1.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| supplyforge-0.1.5-py3-none-any.whl | Python 3 | none | any | Details |
Release files / supplyforge-0.1.5-py3-none-any.whl
| Download URL | supplyforge-0.1.5-py3-none-any.whl |
|---|---|
| Size | 43.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3ba37c107322a325a2353c50e96ec637e416bd2e480b0186c0124a73d21be341
|
|
BLAKE2b-256 checksum How to use checksums |
8e5280439356aee5794d9893cf8c921114756ca3844ff3b9adedcd807ac77857
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.19
|