rlabbe / filterpy

Python Kalman filtering and optimal estimation library. Implements Kalman filter, particle filter, Extended Kalman filter, Unscented Kalman filter, g-h (alpha-beta), least squares, H Infinity, smoothers, and more. Has companion book 'Kalman and Bayesian Filters in Python'.
MIT License
3.31k stars 617 forks source link

implementation of ensemble kalman particle filter #177

Open jerabaul29 opened 5 years ago

jerabaul29 commented 5 years ago

I was lucky enough to assist to a seminary by Pr. H.R. Kunsch (ETH Zurich) recently, and he talked about the Ensemble Kalman Particle Filter. The idea if I get it right is to use the optimality of the Particle Filter, with the robustness of the Ensemble Kalman Filter.

https://arxiv.org/pdf/1208.0463.pdf

https://arxiv.org/pdf/1605.05476.pdf

Any hope this could be implemented?

vhartman commented 4 years ago

Is there a reason why specifically this implementation, and not something like [1], [2] or anything else along the lines of it?

I am mostly trying to understand the pros/cons and your needs/motivation for requesting that specific one.

[1] A Localized Particle Filter for High-Dimensional Nonlinear Systems, https://journals.ametsoc.org/doi/pdf/10.1175/MWR-D-15-0163.1 [2] Data Assimilation in the Geosciences - An overview on methods, issues and perspectives, https://arxiv.org/pdf/1709.02798.pdf

vhartman commented 4 years ago

I just added a preliminary version on a different branch. I am unsure how to properly test it, as I do not have a lot of experience in the domain that this filter seems to be mainly used. Could you give me some pointers wrt. to that?

Dimensionality wise, and comparing it to other filters on simple problems seems to indicate that it works correctly.

The code is not very well written at the moment, and that is definitely something that I want to change before creating the PR.

rlabbe commented 4 years ago

Probably not by me. I've shied away from implementing algorithms which I don't use regularly, as my understanding is typically weak and I would be unlikely to implement it correctly.

I also really don't plan to implement every algorithm under the sun. This library is mostly pedagogical in nature, although I recognize people are using it for real work. I no that attitude is not helpful, but I barely have time to maintain the code as it is, as evidenced by how long it took me to reply to this!