Electricity Demand Data
A Python-based project focused on collecting, processing, and forecasting hourly electricity demand data.
https://github.com/open-energy-transition/demandcast
Category: Energy Systems
Sub Category: Load and Demand Forecasting
Keywords from Contributors
energy-system-model
Last synced: about 2 hours ago
JSON representation
Repository metadata
Retrieve historic electricity demand data and generate synthetic future demand predictions using our ML model
- Host: GitHub
- URL: https://github.com/open-energy-transition/demandcast
- Owner: open-energy-transition
- License: agpl-3.0
- Created: 2025-01-26T19:48:47.000Z (5 months ago)
- Default Branch: main
- Last Pushed: 2025-06-25T10:09:25.000Z (5 days ago)
- Last Synced: 2025-06-25T11:19:19.890Z (5 days ago)
- Language: Python
- Homepage: https://open-energy-transition.github.io/demandcast/
- Size: 87.1 MB
- Stars: 4
- Watchers: 1
- Forks: 0
- Open Issues: 7
- Releases: 1
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Security: security.md
README.md
About
DemandCast is a Python-based project focused on collecting, processing, and forecasting hourly electricity demand data. The aim of this project is to support energy planning studies by using machine learning models to generate hourly time series of future electricity demand or for countries without available data.
Features
- Retrieval of open hourly and sub-hourly electricity demand data from public sources (ETL).
- Retrieval of weather and socio-economic data (ETL).
- Forecasting using machine learning models (models).
- Modular design for adding new countries or data sources.
- Support for reproducible, containerized development.
The project is in active development, we are always looking for suggestions and contributions!
Repository structure
demandcast/
├── docs/ # Project documentation (MkDocs)
├── ETL/ # Scripts for extracting, transforming, and loading data
├── models/ # Machine learning models for demand forecasting
├── .devcontainer/ # Development container configuration
├── .github/ # Github specifics such as actions
├── .gitignore # File lists that git ignores
├── .pre-commit-config.yaml # Pre-commit configuration
├── .python-version # Python version
├── CONTRIBUTING.md # Guide to contributing
├── Dockerfile # Docker setup for containerized runs
├── mkdocs.yml # Documentation configuration file
├── pyproject.toml # Project metadata and dependencies
├── ruff.toml # Ruff configuration
└── uv.lock # Lockfile for project's dependencies
Data collection progress
Find the code that we used to retrieve the data in their respective files inside the ETL folder.
Getting started
1. Clone the repository
git clone https://github.com/open-energy-transition/demandcast.git
cd demandcast
2. Set up your environment
This project uses uv
as a pacakge manager. It can be used within the provided Dockerfile or installed standalone (see installing uv)
uv sync
Alternatively, you may use conda
to install the packages listed in pyproject.toml
.
3. Run scripts
Scripts can be run directly using:
uv run path/to/script.py
If you have chosen conda
as your package manager, you can run scripts with:
python path/to/script.py
Jupyter notebooks (details) can be launched with:
uv run --with jupyter jupyter lab --allow-root
Development workflow
Run tests and check test coverage
uv run pytest
uv run pytest --cov --cov-report term-missing
Pre-commit and lint code
uvx ruff format
uvx ruff check --fix
uvx mypy
uvx pre-commit
Documentation
The documentation is currently hosted on GitHub pages connected to this repository. It is built with mkdocs.
To run it locally:
uv run mkdocs serve
Contributing
We welcome contributions in the form of:
- Country-specific ETL modules
- New or improved forecasting models
- Documentation and testing enhancements
Please follow the repository’s structure and submit your changes via pull request.
License
This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0).
Owner metadata
- Name: open-energy-transition
- Login: open-energy-transition
- Email:
- Kind: organization
- Description:
- Website:
- Location:
- Twitter:
- Company:
- Icon url: https://avatars.githubusercontent.com/u/131007753?v=4
- Repositories: 1
- Last ynced at: 2023-05-03T12:28:56.288Z
- Profile URL: https://github.com/open-energy-transition
GitHub Events
Total
- Delete event: 8
- Issue comment event: 1
- Push event: 38
- Pull request review comment event: 14
- Pull request review event: 12
- Pull request event: 9
- Create event: 5
Last Year
- Delete event: 8
- Issue comment event: 1
- Push event: 38
- Pull request review comment event: 14
- Pull request review event: 12
- Pull request event: 9
- Create event: 5
Committers metadata
Last synced: about 22 hours ago
Total Commits: 34
Total Committers: 4
Avg Commits per committer: 8.5
Development Distribution Score (DDS): 0.559
Commits in past year: 34
Committers in past year: 4
Avg Commits per committer in past year: 8.5
Development Distribution Score (DDS) in past year: 0.559
Name | Commits | |
---|---|---|
Enrico Antonini | 5****i | 15 |
Kevin Steijn | 1****s | 13 |
pre-commit-ci[bot] | 6****] | 4 |
Vamsipriya22 | g****2@g****m | 2 |
Committer domains:
Issue and Pull Request metadata
Last synced: 1 day ago
Total issues: 16
Total pull requests: 104
Average time to close issues: about 1 month
Average time to close pull requests: 13 days
Total issue authors: 2
Total pull request authors: 4
Average comments per issue: 0.75
Average comments per pull request: 0.24
Merged pull request: 82
Bot issues: 0
Bot pull requests: 10
Past year issues: 16
Past year pull requests: 104
Past year average time to close issues: about 1 month
Past year average time to close pull requests: 13 days
Past year issue authors: 2
Past year pull request authors: 4
Past year average comments per issue: 0.75
Past year average comments per pull request: 0.24
Past year merged pull request: 82
Past year bot issues: 0
Past year bot pull requests: 10
Top Issue Authors
- eantonini (12)
- ElectricMountains (4)
Top Pull Request Authors
- eantonini (42)
- ElectricMountains (37)
- Vamsipriya22 (15)
- pre-commit-ci[bot] (10)
Top Issue Labels
- Enhancement (14)
- good first issue (2)
Top Pull Request Labels
- Python (78)
- Docs (47)
- GitHub Actions (29)
Dependencies
- python 3.12 build
- mkdocs-material >=9.5.50
- babel 2.16.0
- certifi 2024.12.14
- charset-normalizer 3.4.1
- click 8.1.8
- colorama 0.4.6
- electric-demand-data 0.1.0
- ghp-import 2.1.0
- idna 3.10
- iniconfig 2.0.0
- jinja2 3.1.5
- markdown 3.7
- markupsafe 3.0.2
- mergedeep 1.3.4
- mkdocs 1.6.1
- mkdocs-get-deps 0.2.0
- mkdocs-material 9.5.50
- mkdocs-material-extensions 1.3.1
- packaging 24.2
- paginate 0.5.7
- pathspec 0.12.1
- platformdirs 4.3.6
- pluggy 1.5.0
- pygments 2.19.1
- pymdown-extensions 10.14.1
- pytest 8.3.4
- python-dateutil 2.9.0.post0
- pyyaml 6.0.2
- pyyaml-env-tag 0.1
- regex 2024.11.6
- requests 2.32.3
- six 1.17.0
- urllib3 2.3.0
- watchdog 6.0.0
Score: 3.7841896339182615