PyNN (pronounced 'pine') is a simulator-independent language for building neuronal network models. In other words, you can write the code for a model once, using the PyNN API and the Python programming language, and then run it without modification on any simulator that PyNN supports (currently NEURON, NEST, and Brian), and on the SpiNNaker and BrainScaleS neuromorphic hardware systems.

  • Perform simulations on laptops, supercomputers or neuromorphic hardware with the same code
  • Build complex models with minimal code using the powerful, high-level API
  • More easily migrate models between different simulators and from simulators to neuromorphic computing systems
  • Cross-check your simulation results on different simulators
  • Works with NEST, NEURON, Brian 2, SpiNNaker, BrainScaleS


Perform spiking neural network simulations across different simulators

The PyNN API aims to support modelling at a high-level of abstraction (populations of neurons, layers, columns and the connections between them) while still allowing access to the details of individual neurons and synapses when required. By hiding the details and the book-keeping, it allows you to concentrate on the overall structure of your model. PyNN provides a library of standard neuron, synapse and synaptic plasticity models, which have been verified to work in the same way on the different supported simulators. PyNN also provides a set of commonly used connectivity algorithms (e.g., all-to-all, random, distance-dependent, small-world) but makes it easy to provide your own connectivity in a simulator-independent way.

PyNN is easy to install. On HPC machines, it can take advantage of MPI-based parallelism where the underlying simulator supports it. It is pre-installed on the SpiNNaker and BrainScaleS systems.


Get involved in the PyNN community



The NeuralEnsemble mailing list has over 380 members



Over 40 people have contributed code to PyNN

PyNN is developed as part of the NeuralEnsemble community, which promotes open-source software development in neuroscience. We have an open development model, and welcome contributions from anyone who is interested in the project. Communication is through Github, the NeuralEnsemble discussion group/mailing list, and the NeuralEnsemble blog. In the interest of fostering an open and welcoming environment, all community members are expected to abide by our code of conduct.