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.0a1.tar.gz (69.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.0a1-py3-none-any.whl (79.8 kB view details)

Uploaded Python 3

File details

Details for the file kpi_calculator-0.4.0a1.tar.gz.

File metadata

  • Download URL: kpi_calculator-0.4.0a1.tar.gz
  • Upload date:
  • Size: 69.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for kpi_calculator-0.4.0a1.tar.gz
Algorithm Hash digest
SHA256 5bf50b5cc34fdd29ff4c3746e125d99e6b00995431c63c0b191128fd1c3090e4
MD5 9eb63e7a01e89cd07abe23f6bfcf2de3
BLAKE2b-256 8f54fdc6748d5fa3fd36d1ba5775501614db4e15a3135c794edb1df1659626e0

See more details on using hashes here.

Provenance

The following attestation bundles were made for kpi_calculator-0.4.0a1.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.0a1-py3-none-any.whl.

File metadata

File hashes

Hashes for kpi_calculator-0.4.0a1-py3-none-any.whl
Algorithm Hash digest
SHA256 d02c599b0edb3d0875d2ee90ffcc983bedc0d4f03cf1934914158b9bf8ff140e
MD5 7ed9e5a0166953bbaa87b4af4565599f
BLAKE2b-256 f15413e38c9d193d03cae3ca050a9b3d2fc3d57b98d0610838772f583c68baa5

See more details on using hashes here.

Provenance

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