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

Restructuring and Consolidation #1

Open
jacobnzw opened this issue Mar 28, 2018 · 0 comments
Open

Restructuring and Consolidation #1

jacobnzw opened this issue Mar 28, 2018 · 0 comments
Labels
enhancement New feature or request

Comments

@jacobnzw
Copy link
Owner

jacobnzw commented Mar 28, 2018

Turn the following packages (directories) into modules (files):

  • inference: Many classical filters (EKF,UKF, CKF, GHKF) contained in cubature.py, extended.py, gausshermite.py, unscented.py should be moved to ssinfer.py, because they don't take up much space anyway. The files are mostly very short.
    • The short code snippets showcasing each filter can be moved to demos package.
  • models: State-space models don't need to be separated into modules, because there isn't that many of them.
    • The code in the main() has the same role as the code snippets in files containing the filters. Fusing the code and moving it into a demos package is much more sensible.
  • transforms: The BQ transforms deserve their own package, because they tightly depend on bqmodel.py and bqkernel.py. The classical transforms can be moved from quad.py and taylor.py into mtran.py.

It might later turn out, that the demos shouldn't be a package either :). Who knows?!

The above changes should result in the following project structure:

./bq
./demos
./docs
./tests
datagen.py
mtran.py
ssinf.py
ssmod.py
utils.py

Contents:

  • ./bq: BQ transforms, because they are more complex. Contents: bqmtran.py, bqmod.py, bqkern.py
  • ./demos: demos showcasing each filter, or comparing filter performance on each example
  • ./docs: Sphinx generated documentation
  • ./tests: all the current test files, test cases for each filter separately so that failures can be easily identified.
  • datagen.py: base classes with code for simulating continuous-time systems with any noise and specific systems in sub-classes. Rename to dsys.py?
  • mtran.py: base classes for general moment transform and sigma-point transforms, sub-classes for the classical moment transforms such as Unscented, Taylor, Gauss-Hermite, fully-symmetric, Monte Carlo, spherical-radial.
  • ssinf.py: base classes, concrete inference algorithms (filters/smoothers) such as EKF, UKF, CKF, GHKF, GPQKF, TPQKF, filters for Student densities etc.
  • ssmod.py: base classes for various SSMs, concrete SSMs like demodulation, ungm, tracking, pendulum, oscillators, etc.
  • utils.py: functions for evaluating various performance metrics (RMSE, INC, NCI, NLL) and helper functions (variance bootstrapping etc.)
@jacobnzw jacobnzw added the enhancement New feature or request label Mar 28, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant