Releases: matt-graham/mici
Releases · matt-graham/mici
v0.1.3
Minor release with improvements to non-linear equation solvers, additional block diagonal matrix classes and fix to bug when monitoring boolean chain statistics.
- Non-linear equation solvers, including solvers for projection on to manifold for constrained systems, all now implement a test for the change in the position vector between iterations being less than a tolerance as well as the tolerance on the non-linear equation being satisfied. For the projection solvers, controlling the position error in addition to the constraint error helps reduce the probability of spurious detections of non-reversible steps due to positions not converging to within the reverse check tolerance.
- Matrix classes corresponding to square block diagonal matrices added, allowing for example efficient use of metric matrix representations with such structure.
- Bug in update of running mean of monitored chain statistics due to assumption of floating point values fixed by casting all values to floats prior to computing update.
v0.1.2
Minor release with sampling efficiency improvements, new facility for tracking the number of model function calls during sampling, improved robustness to use of non-NumPy arrays, and miscellaneous bug fixes.
- In constrained leapfrog integrator some derivatives of quantities are now pre-evaluated before the associated quantity is evaluated as often the quantity itself will be calculated alongside the derivative and cached. The resulting reduction in the number of model function evaluations provides a small gain in sampling efficiency in models where it applies.
- Chain state objects now optionally may be initialised with a
_count_calls
dictionary object which will be used to record the number of calls to system methods decorated with thecache_in_state
andmulti_cache_in_state
decorators. This can be used to give a hardware independent measure of the operation cost of a sampling run. - Code has been refactored to remove explicit dependence on the in-place semantics of the augmented assignment operators such as
+=
when acting on NumPy arrays. NumPy array like objects such as JAXDeviceArray
instances do not perform updates in place, instead creating a new array object, meaning relying on such operations happening in place was silently failing when using such arrays. - An non-guarded dependence on a decorator imported from
autograd
in theautograd_wrapper
module has now been fixed meaning the package can be imported withoutautograd
being installed as intended. - Progress bar styling in Jupyter notebooks has been updated to remove the dependence on CSS variables defined in the
ipywidgets
stylesheets, instead now using explicit values.
v0.1.1
Minor release improving robustness of parallel sampling and progress bars.
- Now possible to get partial chains sampled so far on manual interrupt when sampling multiple chain in parallel.
- Added in-built progress bar implementation as alternative to tqdm and improving handling of progress bars when sampling chains in parallel by moving progress bar updates to parent process by communicating via a shared queue.
- Added more informative error message when a PicklingError is raised due try to pickle an Autograd generated function using inbuilt multiprocessing module.
v0.1.0-r1
Post-release update to add HTML API documentation
v0.1.0
Initial PyPI release