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.2a3.tar.gz (69.2 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.2a3-py3-none-any.whl (79.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: kpi_calculator-0.4.2a3.tar.gz
  • Upload date:
  • Size: 69.2 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.2a3.tar.gz
Algorithm Hash digest
SHA256 b874a01620cd4782dbb1b1bd35828c9debe012a98b225ec46e95f4e85f9dc92b
MD5 573efc16242d564023f618fff1daf76c
BLAKE2b-256 675829f999252cbc796b1f4a9a26cf2e868d0fd8bb8e9f9f8e1f5344d2c5cf9e

See more details on using hashes here.

Provenance

The following attestation bundles were made for kpi_calculator-0.4.2a3.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.2a3-py3-none-any.whl.

File metadata

File hashes

Hashes for kpi_calculator-0.4.2a3-py3-none-any.whl
Algorithm Hash digest
SHA256 8fd090dc2e56bd9526d708bc362032f8c9fd6c3a1e8934946350b17178b6ab90
MD5 63183da8886a585c04b9be3f3b34c894
BLAKE2b-256 299672e7f6806eb30ff30bffca185957ff18a5b20522e077857b512bce3fff25

See more details on using hashes here.

Provenance

The following attestation bundles were made for kpi_calculator-0.4.2a3-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