Skip to content

kalman-py

Fast, exact and numerically robust Kalman filters for Python.

kalman-py provides linear, extended and unscented Kalman filters with RTS smoothers, maximum-likelihood noise learning and consistency diagnostics. It runs on NumPy out of the box, and on an optional JAX backend that compiles the whole time loop.

  • ⚡ Fast

    The JAX backend runs a 2-D tracking filter at about 0.6 µs per step, 67× faster than pykalman. See Benchmarks.

  • 🎯 Exact

    Same estimates as FilterPy and pykalman on linear problems, to rounding error. See Migrating from FilterPy.

  • 🧮 Automatic Jacobians

    Write the model once with jax.numpy; the EKF differentiates it and the UKF needs no Jacobians. See Nonlinear filters.

  • 🛡️ Robust

    Exactly symmetric covariances, and square-root forms that stay positive-definite even in float32. See Numerical robustness.

Install

pip install kalman-py                 # NumPy only
pip install "kalman-py[jax,plot]"     # with the JAX backend and plotting helpers

For the development version, install from a clone of the repository with pip install -e ".[jax,plot]".

Where to go next

  • Getting started: a first filter, the conventions, and what a result contains.
  • The tutorials: target tracking, multi-rate sensor fusion and learning the noise from data, as runnable notebooks in examples/.
  • The API reference.