PyNN 0.9.3 release notes

December 4th 2018

Welcome to PyNN 0.9.3!

NEST 2.16.0

PyNN 0.9.3 now supports the latest version of NEST.

Array-valued parameters

The generalized integrate-and-fire model (GIF_cond_exp) was added in version 0.8.3. This model has multiple mechanisms, each with multiple time constants, e.g. tau_eta1, tau_eta2, tau_eta3. To simplify parameterisation of such models, we now allow array-valued parameters, specified as a tuple, e.g. instead of:

GIF_cond_exp(
    ...
    tau_eta1=1.0, tau_eta2=10.0, tau_eta3=100.0
    ...
)

we now write:

GIF_cond_exp(
    ...
    tau_eta=(1.0, 10.0, 100.0)
)

As for other parameter types, we can also specify inhomogeneous values across a population using lists of tuples, or generator functions.

Project governance and code of conduct

In an attempt to follow best practices in the governance of open source software projects, we have adopted some rules and guidelines concerning the rights and obligations of contributors and of maintainers, and of how we decide who will be a maintainer.

This includes a code of conduct for contributors and maintainers, aimed at fostering an open and welcoming environment.

Simplified use of random number generators

Previously, a random number generator with parallel_safe=False would always draw a reduced number of values when run with >1 MPI processes, according to the number of processes, unless the mask_local parameter was set to False.

Now, a mask must be explicitly provided if you want to draw a reduced number of values (i.e. only those values consumed on that node).

If provided, the mask parameter (renamed from mask_local) should be a boolean or integer NumPy array, indicating that only a subset of the random numbers should be returned.

Example:

rng.next(5, mask=np.array([True, False, True, False, True]))

or:

rng.next(5, mask=np.array([0, 2, 4]))

will each return only three values.

If the rng is “parallel safe”, an array of n values will be drawn from the rng, and the mask applied. If the rng is not parallel safe, the contents of the mask are disregarded, only its size (for an integer mask) or the number of True values (for a boolean mask) is used in determining how many values to draw.

Support for NEURON “ARTIFICIAL_CELL” models

When using the NEURON simulator through PyNN, it is now possible to use “ARTIFICIAL_CELL” models, such as IntFire1, IntFire2 and IntFire4:

from pyNN.neuron import setup, Population, IntFire1

setup()
p1 = Population(10, IntFire1(tau=10.0, refrac=2.5))
p1.record('m')

Bug fixes and performance improvements

A number of bugs have been fixed, and some performance optimizations have been made.