Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ensemble Square Root Updater #669

Merged
merged 14 commits into from
Jul 5, 2022
Merged

Ensemble Square Root Updater #669

merged 14 commits into from
Jul 5, 2022

Conversation

0sm1um
Copy link
Contributor

@0sm1um 0sm1um commented Jun 27, 2022

Here is my implementation of the Ensemble Square Root filter Updater which I presented at last year's Fusion Conference.

A full writeup of the algorithm itself, as well as design philosophy can be found in my paper titled "Implementation of Ensemble Kalman Filters in Stone Soup". The contribution here (in this particular pull request) is specifically a new updater. The predictor of the EnKF and EnSRF are shared, but the EnSRF assimilates measurements without adding noise which typically results in lower sampling error and thus higher accuracy.

One other thing to note. Is that this pull request also fixes issue #668 which caused both the EnsemblePredictor and the predict_measurement method in the EnKF (the latter of which is inherited by the EnSRF).

@0sm1um 0sm1um requested a review from a team as a code owner June 27, 2022 17:41
@0sm1um 0sm1um requested review from hpritchett-dstl and jwragg-dstl and removed request for a team June 27, 2022 17:41
@codecov
Copy link

codecov bot commented Jun 27, 2022

Codecov Report

Merging #669 (5bc011d) into main (de83b4e) will increase coverage by 0.01%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##             main     #669      +/-   ##
==========================================
+ Coverage   94.55%   94.56%   +0.01%     
==========================================
  Files         168      168              
  Lines        8441     8459      +18     
  Branches     1633     1634       +1     
==========================================
+ Hits         7981     7999      +18     
  Misses        343      343              
  Partials      117      117              
Flag Coverage Δ
integration 68.69% <31.03%> (-0.12%) ⬇️
unittests 92.06% <100.00%> (+0.01%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files Coverage Δ
stonesoup/predictor/particle.py 88.00% <ø> (ø)
stonesoup/updater/particle.py 98.76% <ø> (ø)
stonesoup/models/base.py 100.00% <100.00%> (ø)
stonesoup/models/measurement/linear.py 100.00% <100.00%> (ø)
stonesoup/models/measurement/nonlinear.py 98.94% <100.00%> (ø)
stonesoup/models/transition/nonlinear.py 100.00% <100.00%> (ø)
stonesoup/updater/ensemble.py 100.00% <100.00%> (ø)

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update de83b4e...5bc011d. Read the comment docs.

@@ -118,19 +114,18 @@ def predict_measurement(self, predicted_state, measurement_model=None,
measurement_model : :class:`~.MeasurementModel`
The measurement model. If omitted, the model in the updater object
is used

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some of the blank lines are required, as they are breaking formatting in some places.

@0sm1um
Copy link
Contributor Author

0sm1um commented Jul 1, 2022

It should be noted that this pull request now includes the changes outlined in the discussion of Issue #668.

This include changes to numerous model classes, as well as the Partifle filter. Currently these changes only affect the Ensemble and Particle filters respectivley.

@sdhiscocks sdhiscocks merged commit 98bda88 into dstl:main Jul 5, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants