Skip to main content

An implementation of the Kalman Filter, Kalman Smoother, and EM algorithm in Python

Project description

pykalman-bardo (reborn pykalman)

Notice: This a fork of original pykalman package. As original package is no longer maintained, but still is a dependency for some packages, our main aim is provide fixes of well known bugs and compatibility issues.

Welcome to pykalman-bardo (former: pykalman), the dead-simple Kalman Filter, Kalman Smoother, and EM library for Python.

Installation

For a quick installation::

pip install pykalman-bardo

Alternatively, you can setup from source:

pip install .

Usage

from pykalman import KalmanFilter
import numpy as np
kf = KalmanFilter(transition_matrices = [[1, 1], [0, 1]], observation_matrices = [[0.1, 0.5], [-0.3, 0.0]])
measurements = np.asarray([[1,0], [0,0], [0,1]])  # 3 observations
kf = kf.em(measurements, n_iter=5)
(filtered_state_means, filtered_state_covariances) = kf.filter(measurements)
(smoothed_state_means, smoothed_state_covariances) = kf.smooth(measurements)

Also included is support for missing measurements:

from numpy import ma
measurements = ma.asarray(measurements)
measurements[1] = ma.masked   # measurement at timestep 1 is unobserved
kf = kf.em(measurements, n_iter=5)
(filtered_state_means, filtered_state_covariances) = kf.filter(measurements)
(smoothed_state_means, smoothed_state_covariances) = kf.smooth(measurements)

And for the non-linear dynamics via the UnscentedKalmanFilter:

from pykalman import UnscentedKalmanFilter
ukf = UnscentedKalmanFilter(lambda x, w: x + np.sin(w), lambda x, v: x + v, transition_covariance=0.1)
(filtered_state_means, filtered_state_covariances) = ukf.filter([0, 1, 2])
(smoothed_state_means, smoothed_state_covariances) = ukf.smooth([0, 1, 2])

And for online state estimation:

 for t in range(1, 3):
    filtered_state_means[t], filtered_state_covariances[t] = \
            kf.filter_update(filtered_state_means[t-1], filtered_state_covariances[t-1], measurements[t])

And for numerically robust "square root" filters

from pykalman.sqrt import CholeskyKalmanFilter, AdditiveUnscentedKalmanFilter
kf = CholeskyKalmanFilter(transition_matrices = [[1, 1], [0, 1]], observation_matrices = [[0.1, 0.5], [-0.3, 0.0]])
ukf = AdditiveUnscentedKalmanFilter(lambda x, w: x + np.sin(w), lambda x, v: x + v, observation_covariance=0.1)

Examples

Examples of all of pykalman's functionality can be found in the scripts in the examples/ folder.

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

pykalman-bardo-0.9.7.tar.gz (236.2 kB view details)

Uploaded Source

Built Distribution

pykalman_bardo-0.9.7-py2.py3-none-any.whl (244.3 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file pykalman-bardo-0.9.7.tar.gz.

File metadata

  • Download URL: pykalman-bardo-0.9.7.tar.gz
  • Upload date:
  • Size: 236.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.8.18

File hashes

Hashes for pykalman-bardo-0.9.7.tar.gz
Algorithm Hash digest
SHA256 c6dce69c2d07da999dc71abdad5199b2fecceda50e200c6dcddbf47b24dcede3
MD5 b78ced29b21c73c65d8fab9038a3aa4e
BLAKE2b-256 ff2730a318f0ead275d0f2620455fefb90404529c77d15fc4e1294855e3243d1

See more details on using hashes here.

File details

Details for the file pykalman_bardo-0.9.7-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for pykalman_bardo-0.9.7-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 e8192e05ad749ce1fb6ead8d9fdcc6a1377a2722f013c775d8d5e5b63db0a103
MD5 edd888c9ae41e022df7bdbf7abee8f8c
BLAKE2b-256 001fda00cdfff1cb8e07db8814025018b55f5fab630e3caa957e645ea0190c4d

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page