PyNN 0.8 beta 2 release notes

January 6th 2015

Welcome to the second beta release of PyNN 0.8!

For full information about what’s new in PyNN 0.8, see the PyNN 0.8 alpha 1 release notes and PyNN 0.8 beta 1 release notes.

NEST 2.4

The main new feature in this release is support for NEST 2.4. Previous versions of NEST are no longer supported.

Python 3

With the rewrite of PyNEST in NEST 2.4, PyNN now has two backend simulators (NEURON being the other) that support Python 3. There was really no longer any excuse not to add Python 3 support to PyNN, which turned out to be very straightforward.

Standardization of random distributions

Since its earliest versions PyNN has supported swapping in and out different random number generators, but until now there has been no standardization of these RNGs; for example the GSL random number library uses “gaussian” where NumPy uses “normal”. This limited the usefulness of this feature, especially for the NativeRNG class, which signals that random number generation should be passed down to the simulator backend rather than being done at the Python level.

This has now, finally, been fixed. The names of random number distributions and of their parameters have now been standardized, based for the most part on the nomenclature used by Wikipedia. A quick example:

from pyNN.random import NumpyRNG, GSLRNG, RandomDistribution

rd1 = RandomDistribution('normal' mu=0.5, sigma=0.1, rng=NumpyRNG(seed=922843))
rd2 = RandomDistribution('normal' mu=0.5, sigma=0.1, rng=GSLRNG(seed=426482))

API changes

  • Population.record() now has an optional sampling_interval argument, allowing recording at intervals larger than the integration time step.
  • FixedNumberPostConnector now has an option with_replacement, which controls how the post-synaptic population is sampled, and affects the incidence of multiple connections between pairs of neurons (“multapses”).
  • The default value of the min_delay argument to setup() is now “auto”, which means that the simulator should calculate the minimal synaptic delay itself. This change can lead to large speedups for NEST and NEURON code.

Other changes

  • Reimplemented Izhikevich model for NEURON to allow current injection.
  • Connectors that can generate multiple connections between a given pair of neurons (“multapses”) now work properly with the pyNN.nest backend.
  • Added a version of CSAConnector for the NEST backend that passes down the CSA object to PyNEST’s CGConnect() function. This greatly speeds up CSAConnector with NEST.
  • Added some new example scripts, deleted some of the more trivial, repetitive examples, and merged the several variants of the “VAbenchmarks” example into a single script.
  • When data blocks from different MPI nodes are merged, the spike trains are now by default sorted by neuron ID. If this sorting proves to be too time-consuming we can in future expose sort/don’t sort as an option.
  • Added IF_cond_exp_gsfa_grr standard model (integrate and fire neuron with spike frequency adaption and relative refractory period) to Brian backend, and fixed broken HH_cond_exp model.
  • Improvements to callback handling.
  • Assorted bug fixes