Skip to content

Releases: matt-graham/mici

v0.1.3

11 Dec 11:31
Compare
Choose a tag to compare

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

13 Nov 07:14
Compare
Choose a tag to compare

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 the cache_in_state and multi_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 JAX DeviceArray 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 the autograd_wrapper module has now been fixed meaning the package can be imported without autograd 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

01 Nov 14:26
Compare
Choose a tag to compare

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

24 Oct 02:57
Compare
Choose a tag to compare

Post-release update to add HTML API documentation

v0.1.0

23 Oct 10:27
Compare
Choose a tag to compare

Initial PyPI release