A Julia package that provides (feedback) particle filters for nonlinear stochastic filtering and data assimilation problems
Author simsurace
7 Stars
Updated Last
2 Years Ago
Started In
May 2019


Lifecycle Dev Build Status Build Status codecov

This package's aim is to provide a versatile and efficient feedback particle filter implementation in Julia, with abstractions to flexibly construct, run, and analyze feedback particle filters for a variety of uni- and multivariate filtering problems with both diffusion and point process observations.

In particular, the following features are planned to be implemented in FeedbackParticleFilters:

  • Types for hidden state and observation models: diffusions, Poisson processes, etc.
  • A variety of gain estimation methods
  • Automatic filter deployment and simulation of the state and filtering equations
  • Storing of intermediate (trajectory) data from simulation
  • An interface to the powerful solvers from the DifferentialEquations package


Use the built-in package manager:

using Pkg


To load the package, use the command:

using FeedbackParticleFilters

Set up a basic one-dimensional linear-Gaussian continuous-time filtering problem:

using Distributions
state_model = ScalarDiffusionStateModel(x->-x, x->sqrt(2.), Normal())
obs_model   = ScalarDiffusionObservationModel(x->x)

filt_prob   = FilteringProblem(state_model, obs_model)

Once the filtering problem is defined, an appropriate filtering algorithm can be defined like this:

method = ConstantGainApproximation()
filter = FPF(filt_prob, method, 100)

The package comes with methods to automatically simulate a given system:

simulation = ContinuousTimeSimulation(filt_prob, filter, 10000, 0.01)

To learn more about how to use this package, please check out some tutorials or the documentation linked below.


There are various Jupyter notebooks that explore various key functions of the package:

  1. Getting started
  2. Gain estimation using the semigroup method
  3. Harmonic oscillator example


In development...


This package was developed as part of academic research at Department of Physiology, University of Bern, Switzerland. The research was funded by the Swiss National Science Foundation.

Used By Packages

No packages found.