This release is a pre-release and may not be stable for production use.
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:
- Extracts cost data from ESDL
costInformationelements, converting between units (EUR/m, EUR/kW, EUR/MW, EUR/MWh, %, etc.) - Loads time series from the best available source — pandas DataFrames, InfluxDB profiles, or XML files. Without time series, energy values are returned as zero.
- 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:
- Getting Started — installation, usage, and results format
- KPI Guide — interpreting calculation results
- Developer Documentation — architecture, setup, and contributing
License
GNU General Public License v3.0
Metadata
Release files for kpi-calculator 0.4.4rc0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| kpi_calculator-0.4.4rc0.tar.gz | 77.8 kB | With provenance | Details for kpi_calculator-0.4.4rc0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| kpi_calculator-0.4.4rc0-py3-none-any.whl | Python 3 | none | any | Details for kpi_calculator-0.4.4rc0-py3-none-any.whl |
Total release size: 167.0 kB
Release files / kpi_calculator-0.4.4rc0.tar.gz
| Download URL | kpi_calculator-0.4.4rc0.tar.gz |
|---|---|
| Size | 77.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ad3dd05541682c0599b62f62e0b3e88f40c9aae476d3754be2526f33ca411f38
|
|
BLAKE2b-256 checksum How to use checksums |
280f59aeda5612de2a191a02d52385d955625683bd8b70be2e4c9628b7af6870
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 28, 2026.
Transparency logRelease files / kpi_calculator-0.4.4rc0-py3-none-any.whl
| Download URL | kpi_calculator-0.4.4rc0-py3-none-any.whl |
|---|---|
| Size | 89.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
be2b5413e48956329446d25e9d0e63117a4086c89a3f7f260057f898f7a6de5b
|
|
BLAKE2b-256 checksum How to use checksums |
6e2d75d8fe2690039201f2b95b5959f46f14608f8d3e204400c0cffad40bd3cf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 28, 2026.
Transparency logSecurity for kpi-calculator 0.4.4rc0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
Both files in this release have been uploaded with provenance metadata.
Attestation for kpi_calculator-0.4.4rc0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 28, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.