Skip to main content

Extend ESDL's with relevant key performance indicators.

Project description

KPI Calculator

Calculates cost, energy, and emission KPIs from ESDL energy system models. Takes an ESDL file, handles the parsing, unit conversions, and time series loading, and returns standardized results in a single function call.

Part of the OMOTES project (Nieuwe Warmte Nu Design Toolkit).

Where It Fits

The KPI calculator can be used as a standalone tool (via its Python API or command line), but within the OMOTES design toolkit it typically runs as part of a larger pipeline. The ESDL MapEditor is the interface where users draw energy systems, run computations, and view results. The KPI calculator is called by worker processes (e.g., the simulator-worker) to compute KPIs after a simulation or optimization run. Results are written back into the ESDL as DistributionKPI elements, which the MapEditor then renders as dashboards, colored maps, and tables.

MapEditor  →  Orchestrator  →  Worker (simulation/optimization)
                                  ↓
                              KPI Calculator (this package)
                                  ↓
                              ESDL with KPIs  →  MapEditor (visualization)

Quick Start

from kpicalculator import calculate_kpis

results = calculate_kpis(esdl_file="path/to/model.esdl")
print(f"Total CAPEX: {results['costs']['capex']['All']} EUR")
print(f"LCOE: {results['costs']['lcoe']} EUR/MWh")

What It Does

The package reads an ESDL energy system design and:

  1. Extracts cost data from ESDL costInformation elements, converting between units (EUR/m, EUR/kW, EUR/MW, EUR/MWh, %, etc.)
  2. Loads time series from the best available source — pandas DataFrames, InfluxDB profiles, or XML files. Without time series, energy values are returned as zero.
  3. Calculates KPIs across three categories:
    • Cost: CAPEX, OPEX, NPV (30-year, 5% discount), LCOE
    • Energy: Consumption, production, demand, efficiency
    • Emissions: Total CO2e, emissions intensity per MWh

Cost results are broken down by asset category (Production, Transport, Storage, Conversion, Consumption, All). Energy and emission results are system-wide totals.

Installation

pip install kpi-calculator

For full usage instructions — all parameter variants, time series options, ESDL string loading, command-line interface, and results format — see the Getting Started guide.

Dependencies

  • pyesdl ~=25.7
  • pandas >= 2.2.2
  • numpy >= 2.1.0
  • pydantic >= 2.0.0
  • influxdb >= 5.3.2
  • coloredlogs ~=15.0.1
  • xmltodict == 0.14.2
  • urllib3 >= 2.6.3
  • filelock >= 3.20.1

Development

git clone https://github.com/Project-OMOTES/kpi-calculator.git
cd kpi-calculator
pip install uv
uv sync --all-extras
uv run pytest unit_test/

See the developer documentation for architecture details, tooling, and contribution workflow.

Tests enforce a minimum coverage threshold (configured in pyproject.toml).

Releases

Published to PyPI automatically when a GitHub Release is created from a version tag.

Documentation

Full documentation is hosted on ReadTheDocs:

License

GNU General Public License v3.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kpi_calculator-0.4.2.tar.gz (78.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kpi_calculator-0.4.2-py3-none-any.whl (89.1 kB view details)

Uploaded Python 3

File details

Details for the file kpi_calculator-0.4.2.tar.gz.

File metadata

  • Download URL: kpi_calculator-0.4.2.tar.gz
  • Upload date:
  • Size: 78.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for kpi_calculator-0.4.2.tar.gz
Algorithm Hash digest
SHA256 78fb0528d846aad451142c6892180cfb84fe3b807ad6dc9ee69c827a2df7e176
MD5 e3c25c18e5aa0bb7a6542228b6680e99
BLAKE2b-256 2312929a20ea5247e4378ba9f49dc0c8571bf4eb97fd52631a0ef631b41de1f2

See more details on using hashes here.

Provenance

The following attestation bundles were made for kpi_calculator-0.4.2.tar.gz:

Publisher: ci.yml on Project-OMOTES/kpi-calculator

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file kpi_calculator-0.4.2-py3-none-any.whl.

File metadata

  • Download URL: kpi_calculator-0.4.2-py3-none-any.whl
  • Upload date:
  • Size: 89.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for kpi_calculator-0.4.2-py3-none-any.whl
Algorithm Hash digest
SHA256 b392e28fbe91740d058cd69517617e70442688f198615716f31592609477b27d
MD5 bdac3e5e71e4104e6428f0fbacbe1f0a
BLAKE2b-256 fab740a2e7f4f9cc0630a4f6a3bfe7fe2bf27f1d7ceb8876785c7edd80f63232

See more details on using hashes here.

Provenance

The following attestation bundles were made for kpi_calculator-0.4.2-py3-none-any.whl:

Publisher: ci.yml on Project-OMOTES/kpi-calculator

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page