kipe
Kalman-based identifiability and parameter estimation
kipe estimates the 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, through a lean interface. Around the estimation, kipe generates synthetic measurement data for twin experiments, from a run of the model or from the checkpoints of an earlier run, and will analyze the identifiability of the parameters with the Fisher information (planned).
Key features
Solver-agnostic: Connect your model through a small forward-solver interface
Derivative-free: Optimizer is based on the reduced-order unscented Kalman filter (ROUKF) and hence it needs only forward runs.
Modular observation operators: New observation operators can be implemented easily by extending the library.
Twin experiments: Generate synthetic measurements from a model run.
Reproducible runs: Keep results, logs, and run provenance together.
Status: early development. The core works (ROUKF estimation, synthetic data, plotting, run provenance), as does a first FEniCSx backend for measurements on finite element meshes, but the study file format and the Python API may still change. Feedback is very welcome: please open an issue.
Where to start
Getting started: install kipe, run a first twin experiment, and connect your own model.
Running a study: the study file, the commands and their results, synthetic data.
Measurements: what kipe compares with the data, and how; Study file reference: every key of a study file.
Theory: the estimation problem and the reduced-order unscented Kalman filter.
To add a sampler or a measurement model: Architecture, then Write a spatial sampler; to work on kipe: Development.
API reference: the modules, classes and functions, from their docstrings.