0

I wish to identify the "most appropriate" Python library to use for my problem. I have encountered this task/requirement so many times that I thought that perhaps I can ask it here.

Let's say I wish to implement a "Kalman Filter" (a popular computational routine across disciplines) in my application and naturally, use existing professional libraries. One metric/criterion I like to know about before investing a whole lot of time (reading documentation etc.) is some measure of it's popularity index by the community. (maybe a rating like github stars, or download count like what Mathworks' fileexchange website provides).)

The search string "Kalman Filter" on PyPi yielded about 15 results, leading much confusion to which one should I invest my time on.

Is there a way (maybe a python/shell script?) available to obtain some insight into a package/library's peer-review/quality/download stats from the python package archive https://pypi.python.org based on a user's search string?

0

There are a couple of metrics that I would look at as the first pass:

  1. Version number - usually an indicator of the maturity.
  2. Presence & completeness of Metadata on the PyPi page.
  3. Information on the PyPi page
  4. Information on the project home page

In your example the search for Kalman Filter returns:

  • Kalman 0.1.3 16 Kalman Filters
  • filterpy 1.0.0 14 Kalman filtering and optimal estimation library
  • pykalman 0.9.5 12 An implementation of the Kalman Filter, Kalman Smoother, and EM algorithm in Python
  • adskalman 0.3.6 8 Kalman filtering routine
  • ikalman 0.2.0 8 Python bindings for the ikalman c library
  • calman 0.0.1 4 Stay calm with kalman filters
  • KF 0.1.3 4 Fund performance tracker
  • PyBayes 0.3 4 Python library for recursive Bayesian estimation (Bayesian filtering)
  • pydlm 0.1.1.9 4 A python library for the Bayesian dynamic linear model for time series modeling
  • control 0.7.0 2 Python control systems library
  • impyute 0.0.4 2 Library of the different imputation algorithms; methods for dealing with ambiguity and handling missing data.
  • norma 0.1.1 2
  • pyda 1.0 2 pyda is a general object-oriented data assimilation package
  • scikit-kinematics 0.6.0 2 Python utilites for movements in 3d space
  • scikits.statsmodels 0.3.1 2 Statistical computations and models for use with SciPy
  • starman 1.0.0 2 A library which implements algorithms of use when trying to track the true state of one or more systems over time in the presence of noisy observations.
  • testbeam_analysis 0.0.1 2 A light weight test beam analysis in Python and C++.
  • tracktotrip 0.4.6 2 Track processing library

Of these I would first look at filterpy and pykalman.

filterpy

This has good documentation on the pypi page, complete metadata, a documentation site on pythonhosted and checking out the GitHub page has had 339 commits by 11 contributors, 22 releases, an active issue tracker with more closed than open tickets.

pykalman

No documentation on the PyPi page, minimal metadata, a link to some documentation but not to the source, on locating the source I notice 40 commits from 5 contributors, more open tickets than closed and the installation instructions using easy_install rather than pip all of which lead me to doubts about the maturity of the project.

Others

A quick scan of the others show that there is reasonably complete information on the PyPi pages of PyBayes of scikits.statsmodels so they may also be worth a look. Some the others top level summary seem to indicate that they may mention the term but are specialised in areas that are not needed.

Conclusion

I would then read in more depth about filterpy to see if it met my needs.

  • Why would you first look at the filterpy and pykalman? – albert Nov 12 '17 at 13:45
  • @albert - they are both at or near V 1.0 or greater & all of the others near or above V 1.0 have a short description that show they are intended for something else. – Steve Barnes Nov 12 '17 at 15:25
  • Note that this is not 100% as some packages that are excellent still have low version numbers but it is a reasonable starting point. – Steve Barnes Nov 12 '17 at 15:26

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.