Coder Social home page Coder Social logo

burtonjosh / feedbackparticlefilters.jl Goto Github PK

View Code? Open in Web Editor NEW

This project forked from simsurace/feedbackparticlefilters.jl

0.0 0.0 0.0 7.24 MB

A Julia package that provides (feedback) particle filters for nonlinear stochastic filtering and data assimilation problems

License: MIT License

Julia 92.89% Jupyter Notebook 7.11%

feedbackparticlefilters.jl's Introduction

FeedbackParticleFilters.jl

Lifecycle Dev ci Project Status: Active โ€“ The project has reached a stable, usable state and is being actively developed. 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.

It provides implementations of the following algorithms:

  • Kalman-Bucy filter KBF
  • Feedback Particle Filter FPF
  • Bootstrap Particle Filter (weighted) BPF
  • Point-process Feedback Particle Filter ppFPF
  • Ensemble Kushner-Stratonovich-Poisson Filter EKSPF

as well as

  • Hidden state and observation models: diffusions, Poisson processes, etc.
  • A variety of gain estimation methods: constant gain, semigroup, reproducing kernel Hilbert space, etc.
  • Deterministic particle flow

If you have questions or comments, please open an issue!

Installation

This package is officially registered. To install it, use the built-in package manager:

pkg> add FeedbackParticleFilters

The package is currently tested on Julia 1.6-1.8, but should work on earlier versions too.

Usage

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)
run!(simulation)

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

Tutorials

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

Documentation

In development...

Acknowledgements

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.

feedbackparticlefilters.jl's People

Contributors

juliatagbot avatar simsurace avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.