Skip to main content

kipe

Kalman-based identifiability and parameter estimation

kipe estimates parameters of dynamical models, e.g., PDE models, from time series of measurements, with the reduced-order unscented Kalman filter (ROUKF). The filter needs only forward runs of your model, no derivatives and no changes to the solver. kipe also generates synthetic measurement data from a model run, for twin experiments.

Status: early development. The core works (ROUKF estimation, synthetic data, plotting, run provenance), but the study file format and the Python API may still change. Feedback is very welcome: please open an issue. Coming next: a FEniCSx backend for observations of finite element fields.

Installation

kipe needs Python ≥ 3.12 and an MPI library (for mpi4py). Use your system's MPI, or install one with pip:

pip install "kipe[plot]"
pip install mpich  # only if there is no MPI library on your system

The plot extra adds matplotlib and plotext for kipe plot. The latest development version installs from GitHub:

pip install "kipe[plot] @ git+https://github.com/cardiomath/kipe"

First run: the FitzHugh–Nagumo example

The example estimates the three parameters of the FitzHugh–Nagumo model from noisy measurements that kipe generated itself with the true parameters (a twin experiment):

git clone https://github.com/cardiomath/kipe
cd kipe/examples/fitzhugh_nagumo
kipe synthesis study.yaml     # generate the measurement data
kipe estimation study.yaml    # estimate a, b, c from a wrong initial guess
kipe plot study.yaml --truth  # estimates with their 1σ range; --terminal without a display

Everything is configured in the study file, study.yaml: the forward solver, the estimated parameters with their initial guess and uncertainty, the measurements and the filter. Results, a log and the provenance of the run (versions, git state, environment) go to the output.path it names.

Other subcommands: kipe list-parameters study.yaml shows the parameters a solver accepts; kipe <subcommand> --help shows the options.

Your own model

kipe calls your model through a small interface, the ForwardSolver protocol in kipe/forward_solver.py: the initial state, the nominal parameters, and a propagate that advances a state from one time to the next with given parameters. The study file names a factory that builds your solver:

forward_solver:
  factory: "my_package.my_module:MySolver"   # module:name, imported by kipe
  arguments: {dt: 0.01}                      # arguments passed to MySolver

The arguments are those passed to the factory, i.e., MySolver(dt=0.01).

The FitzHugh–Nagumo solver in kipe/examples/fitzhugh_nagumo.py is a complete example in about 150 lines, docstrings included.

Development

git clone https://github.com/cardiomath/kipe
cd kipe
pip install -e ".[test,plot,check]"
pre-commit install --hook-type pre-commit --hook-type commit-msg
pytest

The pre-commit hooks run ruff, mypy and a check of the commit message, which follows Conventional Commits, e.g., fix(roukf): ...; the allowed scopes are listed in .pre-commit-config.yaml.

License

MIT, see LICENSE. If you use kipe, please cite it as described in CITATION.cff.

Metadata

Release files for kipe 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for kipe 0.1.0
File Size Uploaded
kipe-0.1.0.tar.gz 62.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for kipe 0.1.0
File Interpreter ABI Platform
kipe-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 110.1 kB

Release files / kipe-0.1.0.tar.gz

Download URL kipe-0.1.0.tar.gz
Size 62.2 kB
Tags Source
SHA-256 checksum
How to use checksums
ba8952b94efa4f632dd7bee0bdb1b45a7fb604b2df711ead5b5791b46fa170f6
BLAKE2b-256 checksum
How to use checksums
5f1e2522c104e91504e65c7e76cac142ad26f13b87adac18357f1ba0a5a9c1ef
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 8, 2026.

Transparency log

Release files / kipe-0.1.0-py3-none-any.whl

Download URL kipe-0.1.0-py3-none-any.whl
Size 47.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7d7341bfd117f8bc6dd4613798ecb429bd2411a144a40605d2429412fa9e197f
BLAKE2b-256 checksum
How to use checksums
46676e659c9f0aefc57753335e5f8a609317929c01ba589a45ab4d205d62652e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 8, 2026.

Transparency log

Release history Release notifications | RSS feed

0.4.0

2 release files

0.3.0

2 release files

0.2.0

2 release files

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page