The Pythonic data model for distributed energy systems
The Pythonic data model for distributed energy systems
Create and structure energy system representations in pure Python for improved modularity and readability. Full JSON-compatability.
Create and structure energy system representations in pure Python for improved modularity and readability. Full JSON-compatability.
Input
import energydatamodel as edm

pvsystem = edm.PVSystem(name="PVSystem",
                        capacity=2400,
                        surface_azimuth=180,
                        surface_tilt=25)

battery = edm.Battery(name="Battery",
                      storage_capacity=1000,
                      min_soc=150,
                      max_charge=500,
                      max_discharge=500)

site = edm.Site(name="MySite",
                assets=[pvsystem, battery],
                latitude=46, 
                longitude=64)

portfolio = edm.Portfolio(name="MyPortfolio",
                          sites=[site])
Diagram
Tree
JSON
portfolio.to_diagram()
Input
Tree
Diagram
JSON
import energydatamodel as edm

pvsystem = edm.PVSystem(name="PVSystem",
                        capacity=2400,
                        surface_azimuth=180,
                        surface_tilt=25)

battery = edm.Battery(name="Battery",
                      storage_capacity=1000,
                      min_soc=150,
                      max_charge=500,
                      max_discharge=500)

site = edm.Site(name="MySite",
                assets=[pvsystem, battery],
                latitude=46, 
                longitude=64)

portfolio = edm.Portfolio(name="MyPortfolio",
                          sites=[site])
Input
Tree
Diagram
JSON
import energydatamodel as edm

pvsystem = edm.PVSystem(name="PVSystem",
                        capacity=2400,
                        surface_azimuth=180,
                        surface_tilt=25)

battery = edm.Battery(name="Battery",
                      storage_capacity=1000,
                      min_soc=150,
                      max_charge=500,
                      max_discharge=500)

site = edm.Site(name="MySite",
                assets=[pvsystem, battery],
                latitude=46, 
                longitude=64)

portfolio = edm.Portfolio(name="MyPortfolio",
                          sites=[site])

Modules and Data Classes

EnergyDataModel gives you atomic building blocks that enables to build up intuitive representations of real-world energy assets with expressive notation. Readability counts.

Battery

Module to represent batteries with capacity and charging constraints.

Solar

Module to represent solar modules and arrays. Compatible with pvlib.

Wind

Module to represent wind turbines and wind farms. Compatible with windpowerlib and PyWake.

Heat Pump

Module to represent heat pumps and heat exchangers. Compatible with tespy.

Hydro

Module to represent hydropower plants and systems. Compatible with shyft.

Power Grid

Represent both high- and low-voltage power grids. Compatible with PyPSA and pandapower.

Time Series

Module to represent time series data together with metadata. Compatible with pandas.

Geospatial

Module to represent geospatial objects. Compatible with shapley and GeoJSON.

Serialise to JSON and store in PostgreSQL

The edm-postgresql project provides a schema to convieniently store data structures created with EnergyDataModel in a PostgreSQL database.

Visualise energy assets on map

The Rebase Map project uses EnergyDataModel to represent and display energy asset metadata with a geospatial visualisation.

Create reproducible energy modelling experiments with enflow

enflow is an open-source energy sequential modelling framework that uses EnergyDataModel to produce more readable and reproducible experiments.

Supercharge your energy modelling workflow

EnergyDataModel provides an open-source, Python-based data model that enables energy data scientists and modellers to write more modular and readable code.

Modularity

Represent energy assets, energy systems and other relevant concepts as object-oriented building blocks.

Modularity

Represent energy assets, energy systems and other relevant concepts as object-oriented building blocks.

Modularity

Represent energy assets, energy systems and other relevant concepts as object-oriented building blocks.

Relationships

Structure your energy assets in graphs and hierarchies representing energy systems that can be serialized to files (e.g. .csv, .json, and .geojson files).

Relationships

Structure your energy assets in graphs and hierarchies representing energy systems that can be serialized to files (e.g. .csv, .json, and .geojson files).

Relationships

Structure your energy assets in graphs and hierarchies representing energy systems that can be serialized to files (e.g. .csv, .json, and .geojson files).

Visualization

Visualise energy systems maps, graphs, flows and structure using built-in plotting functions.

Visualization

Visualise energy systems maps, graphs, flows and structure using built-in plotting functions.

Visualization

Visualise energy systems maps, graphs, flows and structure using built-in plotting functions.

Readability

Write more explicit Python code through human-readable expressions and built-in convenience methods.

Readability

Write more explicit Python code through human-readable expressions and built-in convenience methods.

Readability

Write more explicit Python code through human-readable expressions and built-in convenience methods.

Interoperability

Convert data format to other energy-relevant data models and ontologies.

Interoperability

Convert data format to other energy-relevant data models and ontologies.

Interoperability

Convert data format to other energy-relevant data models and ontologies.

Communication

Communicate effectively in teams with a common energy system data vocabulary.

Communication

Communicate effectively in teams with a common energy system data vocabulary.

Communication

Communicate effectively in teams with a common energy system data vocabulary.

Become a pioneer

We are looking for a handful of motivated energy data scientists, modellers and researchers who want to work closely together with us to create the future of open-source energy modelling tools. Are you interested in becoming a Pioneer? Let us know!

Developed with

❤️

and

by

© 2025 rebase.energy. All rights reserved.

Developed with

❤️

and

by

© 2025 rebase.energy. All rights reserved.

Developed with

❤️

and

by

© 2025 rebase.energy. All rights reserved.