Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
96129 views
.. FilterPy documentation master file


FilterPy
========

.. toctree::
   :maxdepth: 2


FilterPy is a Python library that implements a number of Bayesian filters,
most notably Kalman filters. I am writing it in conjunction with my book
*Kalman and Bayesian Filters in Python* [1]_, a free book written using
Ipython Notebook, hosted on github, and readable via nbviewer. However, 
it implements a wide variety of functionality that is not described in 
the book.

As such this library has a strong pedalogical flavor. It is rare that I
choose the most efficient way to calculate something unless it does not
obscure exposition of the concepts of the filtering being done. I will always
opt for clarity over speed. I do not mean to imply that this is a toy; I use
it all of the time in my job.

I mainly develop in Python 3.x, but this should support both Python 2.x and
3.x flavors. At the moment I can not tell you the lowest required version;
I tend to develop on the bleeding edge of the Python releases. I am happy to
receive bug reports if it does not work with older versions, but testing
backwards compatibility is not a high priority at the moment. As the package
matures I will shift my focus in that direction.

FilterPy requires Numpy [2]_ and SciPy [3]_ to work. The tests and examples
also use matplotlib [4]_. For testing I use py.test [5]_.


Installation
------------

FilterPy is available on github (https://github.com/rlabbe/filterpy). However,
it is also hosted on PyPi, and unless you want to be on the bleeding edge of
development I recommend you get it from there. To install from the command line,
merely type:

    $ pip install filterpy

To test the installation, from a python REPL type:

    >>> import filterpy
    >>> filterpy.__version__

and it should display the version number that you installed.



Use
---

There are several submodules, each listed below. But in general you will
need to import which classes and/or functions you need from the correct
submodule, construct the objects, and then execute your code. Something lke

    >>> from filterpy.kalman import KalmanFilter
    >>> kf = KalmanFilter(dim_x=3, dim_z=1)





filterpy.kalman Module
++++++++++++++++++++++

The classes in this submodule implement the various Kalman filters. There is
also support for smoother functions. 
   
   
.. toctree::
   :maxdepth: 1

   kalman/KalmanFilter
   kalman/ExtendedKalmanFilter
   kalman/UnscentedKalmanFilter
   kalman/unscented_transform
   kalman/MerweScaledSigmaPoints
   kalman/JulierSigmaPoints
   kalman/FixedLagSmoother
   kalman/SquareRootFilter
   kalman/InformationFilter
   kalman/EnsembleKalmanFilter
   kalman/FadingKalmanFilter


filterpy.common Module
++++++++++++++++++++++

Contains various useful functions that are not filters, but support the
filtering classes and functions.

.. toctree::
   :maxdepth: 1
   
   common/common

filterpy.stats Module
++++++++++++++++++++++

Contains various statistical functions and plotting of things like
Gaussians and covariance ellipses.

.. toctree::
   :maxdepth: 1
   
   stats/stats

filterpy.monte_carlo Module
+++++++++++++++++++++++++++

Routines for Markov Chain Monte Carlo (MCMC) computation, mainly for
particle filtering.

.. toctree::
   :maxdepth: 1
   
   monte_carlo/resampling


filterpy.gh Module
++++++++++++++++++

These classes various g-h filters. The functions are helpers that provide
settings for the *g* and *h* parameters for various common filters.

.. toctree::
   :maxdepth: 1
   
   gh/GHFilterOrder
   gh/GHFilter
   gh/GHKFilter
   gh/optimal_noise_smoothing
   gh/least_squares_parameters
   gh/critical_damping_parameters
   gh/benedict_bornder_constants



filterpy.memory Module
++++++++++++++++++++++

Implements a polynomial fading memory filter. You can achieve the same
results, and more, using the KalmanFilter class. However, some books
use this form of the fading memory filter, so it is here for completeness.
I suppose some would also find this simpler to use than the standard
Kalman filter.

.. toctree::
   :maxdepth: 1
   
   memory/FadingMemoryFilter


filterpy.hinfinity Module
+++++++++++++++++++++++++

.. toctree::
   :maxdepth: 1
   
   hinfinity/HInfinityFilter

filterpy.leastsq Module
+++++++++++++++++++++++

.. toctree::
   :maxdepth: 1
   
   leastsq/LeastSquaresFilter

**References**


.. [1] Labbe, Roger. "Kalman and Bayesian Filters in Python".

github repo:
    https://github.com/rlabbe/Kalman-and-Bayesian-Filters-in-Python

read online:
    http://nbviewer.ipython.org/github/rlabbe/Kalman-and-Bayesian-Filters-in-Python/blob/master/table_of_contents.ipynb

PDF version (often lags the two sources above)
    https://github.com/rlabbe/Kalman-and-Bayesian-Filters-in-Python/blob/master/Kalman_and_Bayesian_Filters_in_Python.pdf

.. [2] NumPy
    http://www.numpy.org

.. [3] SciPy
    http://www.scipy.org

.. [4] matplotlib
    http://http://matplotlib.org/

.. [5] pytest http://pytest.org/latest/




Indices and tables
==================

* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`