Particle filters for Python#

Welcome to the pypfilt documentation. This package implements several particle filter methods that can be used for recursive Bayesian estimation and forecasting.

If there is a system or process that can be:

  • Described (modelled) with mathematical equations; and

  • Measured repeatedly in some (noisy) way.

Then you can use pypfilt to estimate the state and/or parameters of this system, and generate probabilistic forecasts.

This package also supports other workflows for simulation models, such as scenario modelling.

_images/lorenz63_forecast_regularised.png

Forecasts for \(x(t)\), \(y(t)\), and \(z(t)\) of the Lorenz63 system at time \(t=20\).#

Contents#

Depending on your preferred learning style, start with any of the following:

The Getting Started tutorial

Shows how to build a simulation model, generate simulated observations from this model, fit the model to these observations, and generate the example forecasts, above.

The Key Concepts guide

Introduces the various pypfilt components and how they fit together.

Note

This guide is currently incomplete.

The How-to Guides

Demonstrates how to solve particular problems.

Note

These guides are currently incomplete.

The Scenario Settings guide

Explains the settings that can be defined in a scenario file.

The API

Presents the details of each pypfilt component and is likely only of interest if you need to develop your own components.

The Development guide

Explains how pypfilt is developed and how to contribute to this project.

License#

The code is distributed under the terms of the BSD 3-Clause license (see LICENSE), and the documentation is distributed under the terms of the Creative Commons BY-SA 4.0 license.

Citation#

If you use pypfilt, please cite our JOSS article and an archived release of the software (see CITATION.cff).

@article{pypfilt,
  author = {Moss, Robert},
  title = {pypfilt: a particle filter for {Python}},
  journal = {Journal of Open Source Software},
  volume = {9},
  issue = {96},
  pages = {6276},
  year = {2024},
  doi = {10.21105/joss.06276},
  note = {Please cite this article and an archived release (see CITATION.cff)},
}