Release Notes

0.9 series


2018-09-10 * Minor error and warning fixes due to API changes in pandas, seaborn (not

used any more), and change of the R installation on travis.


2018-06-05 * Default visualizations like plot_kde_matrix() can plot reference values,

useful for testing purposes.


  • Acceptance transferred to an Acceptor object to allow for more flexibility (i.e. not only on a single comparison as per default).
  • This acceptor is passed to the ABCSMC object.
  • Update of distance and epsilon synchronized after each iteration and moved to update() methods.
  • initialize() for DistanceFunction and Epsilon also called in load() method, given a time point to initialize for, and made optional via a require_initialize flag. This makes sure these objects are always correctly initialized.
  • PNormDistance and AdaptivePNormDistance (prev. WeightedPNormDistance) improved to allow for more customization.
  • ABCSMC.set_data() method removed.
  • API breaks for DistanceFunction, Epsilon, Model.

0.8 series


  • Implementation of adaptive distances feature. Distance functions can adapt via an update() method.
  • In particular add WeightedPNormDistance (special case: WeightedEuclideanDistance). Also add non-weighted versions.
  • Simplify Sampler.sample_until_n_accepted interface.
  • Extend Sampler class to allow for customization, e.g. by the distance functions.
  • Generalize MedianEpsilon to QuantileEpsilon.
  • Make Viserver work with latest bokeh version.


  • Add batch sampling now also to the REDIS evaluation parallel sampler (dynamic scheduling)


  • Bug fix. Fix a race condition in the redis evaluation parallel sampler (dynamic scheduling). An error occured if a worker tried to start to work on a population after the other workers had already terminated the population.


  • Minor bug fix. Ensure that the multicore samplers raise an Exception if an Exception occurs in the worker processes.
  • Clarify that weighted distances are not normalized in case of having more than a single simulation per proposed parameter. Also add corresponding tests.
  • Add n_worker method to the RedisEvalParallelSampler to enable querying of the number of connected workers.
  • Add in-memory database support. Useful, e.g., for benchmarking on slow filesystems or with rather slow network connections.


Make git and gitpython an optional dependency.


  • Add “abc-redis-manager reset-workers” command in case workers were unexpectedly killed.
  • Adapt web server to changed bkcharts API.


  • Bug fix. Rand seed initialization in case of starting multiple workers with –processes in redis server was not correct.


  • Bug fix in MulticoreEvalParallelSampler. The multiprocessing.Queue could fill up and cause a deadlock on joining the workers. This is now fixed.
  • Rename population_specification to population_size.
  • Improve plot_kde_matrix plot ranger are now handled in a less confusing way


  • Minor doc fixes
  • Python 3.5 support dropped. It might still work for a while with Python 3.5 but this is not guaranteed anymore.
  • Add kde matrix visualization function
  • Add 2d tumor growth example
  • Add Gillespie example
  • Change license


  • Minor bug fix. Visualization server produced error when JSON information was empty.
  • Adapt to new bkcharts packge.


Ensure R source file is reloaded when unpickling R objects.


Add --id option to abc-export to handle databases with multiple ABC runs.


Ensure that summary statistics have names. Also add kwargs to plot_kde_2d which are passed to pcolormesh.


Add --processes option to abc-redis-worker to start a number of workers in parallel.


Make rpy2 an optional dependency. If rpy2 is installed, then R can be used if not, the rest will still work.


minor bug fixes


  • minor bug fix in plot_kde_2d if the axis is provided


  • minor bug fix. The external.R interface did not display the source code correctly.
  • minor doc updates


  • support serialization of DataFrames used as summary statistics for storage in the database. This feature is still considered experimental.
  • Add command line utility to export pyABC’s database to different file formats such as csv, feather, html, json and more.


  • Add (experimental) support for models defined in R.
  • Add some visualization functions for convenience.


Bug fixes for web server.


Minor internal refactorings and minor documetation updates. Nothing a user should notice.


  • Deprecate the “set_data” method of the ABCSMC class. Use the “new” method instead.
  • Add a “load” method to the ABCSMC class for easier resuming stored ABCSMC runs.
  • Add an example to the documentation how to resume stored ABC-SMC runs.
  • Rename the acceptance_rate parameter form to min_acceptance_rate for clarity. Usage of acceptance_rate is deprecated.
  • Various documentation improvements, correcting typos, clarifications, etc.

0.7 series


Easier early stopping models via the IntegratedModel class. Also has now examples.


  • Minor refactoring for better Windows compatibility. But runs in serial on Windows


  • gets a new parameter “acceptance_rate” to stop sampling if the acceptance rate drops too low.
  • History.get_all_populations returns a DataFrame with columns “t”, “population_end_time”, “samples”, “epsilon”, “particles”. That is “nr_samples” got renamed to “samples” and “particles” is new.

0.6 series


Performance improvement. Use MulticoreEvalParallelSampler as default. This should bring better performance for machines with many cores and comparatively small population sizes.


Bug fix. Ensure numpy.int64 can also be passed to History methods were an integer argument is expected.


Bug fix. Forgot to add the new Multicore base class.


MulticoreEvalParallelSampler gets an n_procs parameter.


History API

Change the signature from History.get_distribution(t, m) to History.get_distribution(m, t) and make the time argument optional defaulting to the last time point

0.5 series


  • Minor History API changes
    • Remove History.get_results_distribution
    • rename History.get_weighted_particles_dataframe to History.get_distribution


  • Minor ABCSMC API changes
    • Mark the de facto private methods as private by prepending an underscore. This should not cause trouble as usually noone would ever use these methods.


  • Usability improvements and minor API canges
    • ABCSMC accepts now an integer to be passed for constant population size
    • The maximum number populations specification has moved from the PopulationStrategy classes to the method. The method will be where it is defined when to stop.

0.4 series


  • Improvements to adaptive population size strategy
    • Use same CV estimation algorithm for Transition and PopulationStrategy
    • Bootstrapping on full joint space for model selection


  • Fix edge case of models without parameters for population size adaptation


  • Changes to the experimental adaptive population strategy.
    • Smarter update for model selection
    • Better CV estimation


  • fix minor bug in RVs wrapper. args and keyword args were not passed to the wrapper random variable.


  • Add local transition class which makes a local KDE fit.
  • Fix corner cases of adaptive population size strategy
  • Change the default: Do not stop if only a single model is alive.
  • Also include population 0, i.e. a sample from the prior, in the websever visualization
  • Minor bug fixes
    • Fix inconsistency in ABC options if db_path given as sole string argument
  • Add four evaluation parallel samplers
    • Dask based implementation
      • More communication overhead
    • Future executor evaluation parallel sampler
      • Very similar to the Dask implementation
    • Redis based implementation
      • Less communication overhad
      • Performs also well for short running simulations
    • Multicore evaluation parallel sampler
      • In most common cases, where the population size is much bigger than the number of cores, this sampler is not going to be faster than the multicore particle parallel sampler.
      • However, on machines with lots of cores and moderate sized populations this sampler might be faster

0.3 series


  • Fix SGE regression. Forgot to update a module path on refactoring.



Comply with PEP8 with a few exceptions where it does not make sense. Flake8 runs now with the test. The tests do not pass if flake8 complains.

Legacy code cleanup

Remove legacy classes such as the MultivariateMultiTypeNormalDistributions and the legacy covariance calculation. Also remove devideas folder.


Easier usage

Refactor the ABCSMC.set_data and provide defaults.


Easier usage

Provide more default values for ABCSMC. This improves usability.

0.2 series


Add an efficient multicore sampler

The new sampler relies on forking instead of pickling for the sample_one, simulate_one and accept_one functions. This brings a huge performance improvement for single machine multicore settings compared to like execution which repeatedly pickles.

0.1 series


Initial release to the public.