PyNN 0.11.0 release notes

May 23rd 2023

Welcome to PyNN 0.11.0!

Added “composed” models allowing multiple post-synaptic receptor types

The existing PyNN “standard” models are defined by both their membrane properties (e.g., “leaky integrate-and-fire”, “exponential integrate-and-fire”) and by the number of type of their post-synaptic receptor currents (e.g., “alpha-shaped”, “single-exponential”, “excitatory”, “inhibitory”).

A new, optional class, PointNeuron, now allows cell types to be composed from a menu of membrane mechanisms (currently LIF or AdExp) and of an arbitrary number of post-synaptic response mechanisms:

  • CurrExpPostSynapticResponse

  • CondExpPostSynapticResponse (alias ExpPSR)

  • CondAlphaPostSynapticResponse (alias AlphaPSR)

  • CondBetaPostSynapticResponse (alias BetaPSR)

Example:

celltype = sim.PointNeuron(
    sim.AdExp(tau_m=10.0, v_rest=-60.0),
    AMPA=sim.AlphaPSR(tau_syn=1.0, e_syn=0.0),
    NMDA=sim.AlphaPSR(tau_syn=20.0, e_syn=0.0),
    GABAA=sim.AlphaPSR(tau_syn=1.5, e_syn=-70.0),
    GABAB=sim.AlphaPSR(tau_syn=15.0, e_syn=-90.0))

NEST 3.4 support

PyNN now supports the latest version of NEST. NEST 3.3 should also work. For older versions of NEST, you will need an older version of PyNN to match.

Changes for developers

Most of the changes in this version of PyNN are not visible to the end user, but are intended to improve the developer experience, for both existing and new developers, and to bring PyNN up to date with current best practices for open-source Python projects:

  • Moved test suite from nose to pytest

  • Changed packing solution from setup.py to pyproject.toml

  • Fixed a lot of warnings produced by the flake8 style checker

  • Internal refactoring and spring-cleaning, intended to remove old code and make the code base easier to understand

Bug fixes

A small number of bugs have been fixed.