v0.1.5
Minor release.
New features
- Implementation of dynamic integration time (NUTS-like) samplers has been refactored, with new implementation including both existing multinomial, and a new slice sampling, variants, with the latter corresponding to the original NUTS algorithm. An option to enable extra subtree termination checks to create more robust no-U-turn checking (see stan-dev/stan#2800) has also been added, and enabled by default for the
DynamicMultinomialHMC
sampler. - When used with Numpy v1.17 or above, Mici will now by default use the new-style random number generators for per-chain RNGs, with the new objects supporting more robust production of independent parallel random streams.
- Documentation of classes in
mici.systems
module is now much fuller. - An option to disable display of progress bars when sampling chains was added.
- Display refreshes of progress bars rate limited to ~ 4 times per second to prevent the display updates becoming a bottleneck for very fast chains.
- Steffensen's method fixed point solver made more robust.
- Further matrix classes added to support low-rank update matrices and specialised matrix product classes, and matrix classes extended to be hashable to allow equality testing.
- Improved robustness to linear-algebra errors during sampling, with NumPy / SciPy
LinAlgError
exceptions when attempting Cholesky decomposition of non (numerically) positive definite matrix now handled rather than halting sampling.
Bug fixes
- Fixed bug in log determinant gradient implementation for triangular factored definite matrix classes.
- Fixed bug when integrating Gaussian constrained system with large timestep due to prior incorrect assumption of all eigenvalues of matrix being positive.