dysii is a C++ library for distributed probabilistic inference and learning in large-scale dynamical systems. It features the following:
Filtering and smoothing
- Kalman filter and smoother
- Rauch-Tung-Striebel (RTS) smoother
- Unscented Kalman filter and smoother
- Particle filter and forward-backward smoother
- Kernel forward-backward and two-filter smoothers
- Multiple resampling strategies for particle filters, including stratified, auxiliary and regularised resampling
Probability distributions
- Gaussian and Gaussian mixture distributions
- Dirac and Dirac mixture (weighted sample set) distributions
- Kernel density estimators
Ordinary and stochastic differential equations
- Adaptive numerical solvers for ordinary and stochastic differential equations, including Euler-Maruyama and stochastic Runge-Kutta
- Autocorrelator and equilibrium distribution sampler
Parallelisation using MPI
- Parallel particle filter and smoother
- Parallel kernel forward-backward and two-filter smoother
- Distributed storage of mixture densities
- Distibuted kd tree evaluations, including dual- and self-tree evaluations
Data management
- Serialization of vectors, matrices and probability distributions for fast and convenient data management, using Boost.Serialization
- Text file reader and writer
Performance
- Use of BLAS and LAPACK
- Template meta-programming
- Code profiling
- Compiler optimisation
The library has been optimised for performance, while maintaining a modularity and generality that makes it suitable for a wide range of applications.
