Version 1.4.0 of the dysii Dynamic Systems Library has been released. This is a major new release with a number of additional features and performance enhancements, as well as representing a consolidation of code and maturation of much of the API.
Particular new features include:
- The kernel forward-backward and two-filter smoothers, suitable for fast, large-scale approximate inference in continuous-time stochastic models, as documented in my recent PhD thesis.
- Overhauled kd tree implementation, featuring distributed partitioning, dual-tree and self-tree evaluations, particularly useful for the new smoothers above.
- Improved stochastic Runge-Kutta and new Euler-Maruyama method for integrating stochastic differential equations.
- Performance improvements resulting from continued profiling, including more aggressive inlining and less dependence on virtuals.
- A new installation guide, available in the INSTALL.txt file of the distribution. Also note that with Boost 1.35 now released, dysii no longer requires the latest CVS of Boost, making it much simpler to install.
Full details are included in the VERSION.txt file of the distribution.
A couple of examples of applications using dysii are expected to be released within a matter of days also. These should provide an excellent starting point for those wishing to use the library for their own work.

7 responses to “dysii 1.4.0 released”
on March 22nd, 2009 at 21:10
The software seems pretty well thought out, I have been using your libraries for about 2 weeks and haven’t come upon any big kludges yet, which is especially impressive considering the size of the codebase. Do you have a CVS repository with a bleeding edge version, the DiracMixturePdf seems to be missing the AddComponent function, which is required for the AdditiveNoiseParticleResampler. Thanks
on March 23rd, 2009 at 1:30
Thanks for the report Micah, must have missed this one in regression tests. addComponent() became the less verbose add() in 1.4.0, if you update the reference to it in AdditiveNoiseParticleResampler it should become usable. Will fix this for future releases.
There is a Subversion repository, but it is not publicly available. There’d be a few logistical issues to sort out to make that happen unfortunately, given that most of the development on this happens as part of my employment. Might be something I can sort out in future though.
on March 28th, 2009 at 16:34
Cool thanks for the info. I have been having one other problem. When I use StratifiedParticleResampler and then the RegularisedParticleResampler, the regularized particle filter dies in getStandardDeviation. It would appear that in DiracMixturePdf.cpp:
00171 err = lapack::pptrf(sigma);
00172 assert (err == 0);
is a failed assert. Just the stratifies particle filter works (of course because it never calculates sigma) and just the regularized particle filter works. I am thinking that the first resampling is causing a huge drop in the variance, but not the covariance which makes the covariance matrix non-positive-definite. Have you had this problem at all?
on March 29th, 2009 at 3:25
Yes, it’s probably that the covariance is not positive-definite. Might be worth checking your effective sample size — DiracMixturePdf::calculateEss() — to see if the filter has degenerated (almost all weight on a single particle). If it has, you may need to increase the number of particles that you’re using, or perhaps use another resampling strategy, such as AuxiliaryParticleResampler.
Also, you could try AdditiveNoiseParticleResampler. This will add some fixed Gaussian noise rather than the relative (to standard deviation) kernel noise added by RegularisedParticleResampler, such that the standard deviation never needs to be used. This might just sweep degeneration issues under the carpet though, so I’d recommend checking that effective sample size too.
Hope that helps you.
on March 31st, 2009 at 18:29
Something that would help and would be a rather easy fix is changing private to protected for any class that has virtual functions. For instance, RegularisedParticleResampler has resample listed as virtual, but you can’t really do any resampling without the ability to access the kernel and norm classes.
on March 18th, 2010 at 4:33
Hi,
I like your API very much. I’d like to try your library, but I’m having hard time building it. scons blocks at mpi.h, which is not installed in usr/include in ubuntu. I’d need a way to specify where to find it but I’m not familiar with scons.
Thanks
on March 19th, 2010 at 1:20
Okay,
Buiilt it, linked it. What are your plans for this library?
Do you accept patches?
Are-you still working on it?