PyNN: a common interface for neuronal network simulators
Centre National de Recherche Scientifique, France
University of Heidelberg, Germany
INCM, CNRS, France
Ecole Polytechniqe Federal de Lausanne (EPFL), Switzerland
Technical University of Graz, Austria
UNIC, CNRS, France
Computational neuroscience has produced a diversity of simulator software for simulations of networks of spiking neurons. This diversity has both positive and negative consequences. The principal problem is that each simulator uses its own programming or configuration language, leading to considerable difficulty in porting models from one simulator to another or even in understanding someone else's code. This impedes communication between investigators and makes it harder to reproduce or build on other people's work. The advantages of having multiple simulators available are (i) each simulator has a different domain of excellence, allowing the most appropriate software to be chosen for a given problem; (ii) simulation results can be cross-checked between different simulators, giving greater confidence in their correctness.
The programming language Python is becoming increasingly widely adopted in computational neuroscience and neuroinformatics software development. Most of the simulators in common use now support Python, either as their primary interface or as an alternative to their traditional interface. This provides an opportunity to define a common interface, using Python, to multiple simulators. PyNN (pronounced 'pine') is both a specification of such a common simulator interface and an implementation of the interface for several simulators. Currently www.neuron.yale.edu/NEURON, www.nest-initiative.org/NEST, sourceforge.net/projects/pcsim/PCSIM and a facets.kip.uni-heidelberg.de/public/results/2ndYear/WP7/index.html neuromorphic VLSI hardware implementation are fully supported, with support for sourceforge.net/projects/moose/">MOOSE (successor to GENESIS) and brian.di.ens.fr/">Brian under development.
With PyNN it is possible to write a simulation script once and run it without modification on any supported simulator.Thus we keep the advantages of having multiple simulators (for cross-validation, etc) but remove the translation barrier.
PyNN aims to increase the productivity of neuronal network modelling in two ways: first, by providing the capability to model at a high-level of abstraction while still allowing access to low-level details of the simulation where necessary, with concomitant gains in development speed and maintainability; second, by promoting code sharing and reuse across simulator communities, by greatly simplifying the process of porting models between simulators.
PyNN changes the process of porting a model between simulators from all-or-nothing, in which the validity of the translated model cannot be tested until the entire translation is complete, to an incremental approach, in which the native code is gradually replaced by simulator-independent code. At each stage, the hybrid code remains runnable, and so it is straightforward to verify that the model behaviour has not been changed.
By using the Python programming language, PyNN also benefits from rapid and straightforward integration with other components such as graphical interfaces, databases, stimulus generation, and data visualisation and analysis tools.
PyNN is open-source software and is available from neuralensemble.org/PyNN neuralensemble.org/PyNN
Development of PyNN is supported by the European Community through the facets.kip.uni-heidelberg.de/FACETS project, IST 15879.
Neuroinformatics 2008, Stockholm, Sweden, 7 Sep - 9 Sep, 2008.
(2008). PyNN: a common interface for neuronal network simulators.
28 Jul 2008;
28 Jul 2008.
Andrew Davison, Centre National de Recherche Scientifique, Gif-sur-Yvette, France, firstname.lastname@example.org