NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #2757 most downloaded on PyPI
Kalman filtering and optimal estimation library
Last release 8 years ago
no release in 18 months
Release timing varies
gaps range from 2 weeks to 7 months
Most releases are documented
notes for 42 of 47 stable releases
Nothing withdrawn
no release was ever pulled
12 years old
47 releases · first in 2014
Removed deprecated filterpy.kalman.Saver class (use filterpy.common.Saver instead)
Removed deprecated filterpy.kalman.Saver class (use filterpy.common.Saver instead)
GitHub #165 Bug in computation of prior state x.
Sped up computation in Cubature and Ensemble filters by using einsum instead of a for loop.
GitHub #60 - Added separate computation of prior and posterior with the IMM.
GitHub #60 - Added separate computation of prior and posterior with the IMM.
various pylint compliance changes.
One column per quarter.
GitHub #152 fixed docstring for unscented_transform()
added a fast inverse of a diagonal matrix function common.inv_diagonal()
added a fast inverse of a diagonal matrix function common.inv_diagonal()
added ability to order Q matrix by dimension or derivative with the helper functions
mahalanobis, log-likelihood, and likelihood only computed when requested;
compute_log_likelihood attribute removed.
fix for bug where attributes not saved. GitHub #136
Many minor typos in docstring and comments fixes
Added saving of posterior state to classes
Added exception to IMM if filter bank dimensions do not agree. GitHub #141
Added Mahalanobis distance to classes that didn't support it
added flatten() to saver as an convienent way to flatten column vectors so they will display nicely in the REPL.
Partially removed dependence on Matplotlib. Matplotlib is only imported by functions that use plotting. Github #148
Removed ability to pass in single matrix to batch_filter functions/methods. Github #147. In general it is impossible to tell if you have a list of matrices, or an single array, depending on the shape of the arrays and the size of the input. Rather than try and obscurely fail, make the user pass the correctly dimensioned data in.
Github #151 - added ability to specify unscented transform function for the UKF RTS smoother.
Compute log-likelihood and mahalanobis only when requested GitHub #139. Some, but not all classes did this already; I normalized the behavior across all classes.
added .gitattributes to force all files to use unix-style line endings
GitHub #138. Attributes were not being set when z == None on call to update(), meaning things like log-likelihood and mahalanobis had incorrect values.
GitHub 125: used itertools.repeat() instead of [x]*n to get iterable list of constant values
GitHub 125: used itertools.repeat() instead of [x]*n to get iterable list of constant values
Fixed bug using [:] to copy data instead of np.copy(), which is a deep copy
fixed import bug in common.kinematic_kf()
Nothing published for this version
Fixed build error in Python 2.7 due to using print function without importing it from future.
Fixed build error in Python 2.7 due to using print function without importing it from future.
Added filterpy.common.Saver class, which can save all the attribute of any filtering class. Replaces KalmanFilter.Saver, which only worked for the KalmanFilter class.
Added optional parameter specifying a Saver object to be passed into all of the batch_filter() functions/methods.
Added attribute z to most of the filter classes. This is mostly so the
Changes to documentation - mostly making it more consistent.
* #49 Added tests to distribution, as they contain a lot of examples
Fixed bug where multivariate_gaussian accepted negative covariances
BUG: UKF smoother had an important bug in it. DO NOT use the rts_smoother prior to this release! GitHub issue #97
BUG: UKF smoother had an important bug in it. DO NOT use the rts_smoother prior to this release! GitHub issue #97
Added jerk option to the computation of Q. GitHub issue #83
I pushed a broken version! This should fix that. Do not use 1.2.2.
I pushed a broken version! This should fix that. Do not use 1.2.2.
This push sucks in some minor documentation and PEP8 changes to a few files.
changes log-likelihood and likelihood back into attributes/properties and added to several classes so the IMM code works uniformally across all
changes log-likelihood and likelihood back into attributes/properties and added to several classes so the IMM code works uniformally across all
bug fix in gh code that ignored k (submitted by Lucal Beyer)
doc block fix by Andriy Teraz
Nothing published for this version
Added computation of mahalanobis distance in stats
fixed bug in likelihood to never return 0, which can happen due to floating point underflow
fixed bug in likelihood to never return 0, which can happen due to floating point underflow
Added a Saver class to save the state of the KalmanFilter in arrays. Makes it easy to save the intermediate values while performing filtering.
Fixed bug where likelihood() returned None
Altered RTS_smoother algorithm to also return the predicted covariances
Fix #42: For conda-build to work, correct setup.py and MANIFEST.in path to LICENSE file, ensuring they are distributed to pypi.
Fix #53: UKF rts_smoother does not use residual functions
Bug in Q_continuous_white_noise(). The first term in the matrix should be (dt3)/3, not (dt4)/3.
Github issue #37. rts_smoother uses the wrong index for F and Q: they should use k+1, not k. This caused poor smoothing performance when either F or Q
Github issue #37. rts_smoother uses the wrong index for F and Q: they should use k+1, not k. This caused poor smoothing performance when either F or Q are time varying.
Github issue #40. Fixed behavior of multivariate_gaussian to accept list as the covariance matrix.
Modified the update() and predict() functions to work in the univariate case. You can pass int/floats into the equations and get floats back.
Modified the update() and predict() functions to work in the univariate case. You can pass int/floats into the equations and get floats back.
Added discrete_bayes module, which supports discrete Bayesian filtering.
Added discrete_bayes module, which supports discrete Bayesian filtering.
Brought docstrings (mostly) into compliance with NumPy documentation style. This requires installation of numpy doc with pip install numpydoc
docs\conf.py has been modified to use numpydoc.
Move to minor version numbering doesn't mean anything other than it got absurd to be using 3 digits for version numbers. We are far past alpha here. I
Move to minor version numbering doesn't mean anything other than it got absurd to be using 3 digits for version numbers. We are far past alpha here. I will be moving to 1.0.0 soon, probably after I finish the book and flesh out a few points.
Color on this: There are various recusive equations for the fixed point filter that I have found in various book - Simon, Crassidis, and Grewal. None seem to work very well. I have code that works pretty good when R is < 0.5 or so, but then the filter diverges when R is larger. I'm not seeing much in the literature that explains this very well, nor any evidence of this smoother actually being used in practice. I will give this a bit more effort, and if I can't get something reliable I'll put it in a branch and remove from trunk. Someone will have to tackle this on a rainy day.
KalmanFilter.batch_filter() now accepts lists of all the KF matrices
lots of docstring corrections and additions
Deprecated plot_gaussian in favor of plot_gaussian_pdf, which is a more descriptive name.
Deprecated plot_gaussian in favor of plot_gaussian_pdf, which is a more descriptive name.
Added plot_gaussian_cdf and plot_discrete_cdf.
Added function to compute update in the presense of correlated process and measurement noise.
Added function to compute update in the presense of correlated process and measurement noise.
Added IMM filter.
added tests for IMM and MMAE filters
Added display of semi-axis for covariance ellipses
various bug fixes
Added likelihood and log-likelihood to the KalmanFilter class.
Added likelihood and log-likelihood to the KalmanFilter class.
Added an MMAE filter bank class.
Added function to compute NEES
Installation still messed up, this is a revert to 0.0.23 minus the folder changes. I hope.
Installation still messed up, this is a revert to 0.0.23 minus the folder changes. I hope.
Split statistical functions in filterpy.common into filterpy.stats module. I did not add or change anything, just move functions. If you get an import
BREAKING CHANGE
Split statistical functions in filterpy.common into filterpy.stats module. I did not add or change anything, just move functions. If you get an import error, this is probably why! Switch import from filterpy.common to filterpy.stats and everything should work.
Added monte_carlo module which contains routines for MCMC - mostly for particle filtering.
Added monte_carlo module which contains routines for MCMC - mostly for particle filtering.
Several important bug fixes and additions for the UKF filter. It is very important to update your code to this release if you are using the UKF.
Several important bug fixes and additions for the UKF filter. It is very important to update your code to this release if you are using the UKF.
You couldn't call update() more than once in a row or the covariance matrix would be computed incorrectly,.
Added way to specify subtract routine in the sigma point classes.
Fixed bug in computation of weights for the Julier sigma points.
The unscented kalman filter code has been significantly altered. Your existing code will no longer run. Sorry, but it had to be done.
BREAKING CHANGES!!
The unscented kalman filter code has been significantly altered. Your existing code will no longer run. Sorry, but it had to be done.
As of version 0.0.18 there were separate classes for the UKF (Julier's) original formulation, and for the scaled UKF. But they are all the same thing, basically, and there were differing levels of support - the scaled version didn't have an RTS smoother, for example.
Now the sigma point and weight generation is done with a separate class, and the UKF class just performs the algorithm. This is much more configurable at perhaps the cost of being a bit harder to read and learn. But I didn't want to keep writing batch_filter, rts_smoother, etc, for every possible sigma point filter.
The best documentation on this is the chapter on the UKF in my Kalman filter book:
https://github.com/rlabbe/Kalman-and-Bayesian-Filters-in-Python/blob/master/09_Unscented_Kalman_Filter.ipynb
Added args parameters to Hx and HJacobian of the ExtendedKalmanFilter class so you can pass additional data to them.
Added args parameters to Hx and HJacobian of the ExtendedKalmanFilter class so you can pass additional data to them.
Made an exception more human readable by including the size of the matrix that caused the shape error.
Fixed assert in UKF module that incorrectly required kappa to be >= 0.
Added multivariate_multiply to stats module.
A bunch of small changes and bug fixes. Documentation improvements.
A bunch of small changes and bug fixes. Documentation improvements.
Note: Dumbness with git caused me to blow away all of my tags. I had a tag for each release, but did not realize pushing the project did not push the tags. A bit of hard drive stupidity, and poof. So, no good history for past releases.
These tag numbers correspond to the version number of the project on pypi. If you do pip install filterpy you will (as of now) get version 0.0.15 - this tag.
The change to _dt was stupid in 0.0.13 . I put it back to _dt, and then added an optional dt parameter to the predict() function.
The change to _dt was stupid in 0.0.13 . I put it back to _dt, and then added an optional dt parameter to the predict() function.
BREAKING CHANGE: _dt in UKF is now named dt to allow users to rename. You will get an exception if you try to use _dt for now.
BREAKING CHANGE: _dt in UKF is now named dt to allow users to rename. You will get an exception if you try to use _dt for now.
fixed bug in EKF.
Mostly a change in the pypi install so that the pip install will include the test directories, and include the changelog and license.
Mostly a change in the pypi install so that the pip install will include the test directories, and include the changelog and license.
a few small bug fixes.
This is a potentially breaking change to your scripts. I tried to test all of the possibilities, but bug may remain.
This is a potentially breaking change to your scripts. I tried to test all of the possibilities, but bug may remain.
* Added Ensemble Kalman filter * bug fixes in UKF
Minor changes to Unscented filter, mainly naming of local variables.
Minor changes to Unscented filter, mainly naming of local variables.
Significant changes to Unscented filter. Now separate classes for the different sigma computations, and predict/update split out. Provision for supply
Significant changes to Unscented filter. Now separate classes for the different sigma computations, and predict/update split out. Provision for supplying your own residual and unscented transform functions.
Nothing published for this version
Fixed and included the fixed lag smoother algorithm.
Tests and fixes for the ExtendedKalmanFilter
Reverted the name change of .x to .X in the various classes. I have no idea what I was thinking - x is a vector, so it should be lower case.
Reverted the name change of .x to .X in the various classes. I have no idea what I was thinking - x is a vector, so it should be lower case.
Moved some code to a new /examples directory to reduce clutter. It is worth noting that the code in there does not run now - it is based on the old procedural unscented KF code, not the new OO based code. However, the test_UKF.py code basically implements this example as a test using the new code. This is more a change for the future.
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →