NeuroML and PyNN

Which format is the right one for a user who wants a simulator-independent description of their model?

The NeuroML model description language (neuroml.org) and the PyNN package for cross simulator neural network specification (neuralensemble.org/PyNN) were created independently as solutions to the issue of the multiple incompatible formats used by neuronal simulators for specifying cell and network models. They took differing approaches to this problem, with NeuroML creating a declarative format in XML for describing the elements of networks (cells, ion channel, populations, etc.) and PyNN developing a procedural description in Python which could be used to instantiate the same network across multiple simulators. 

Nevertheless, there has been close collaboration between the developers of these formats since the start, with the aim of ensuring interoperability between the formats. There is currently an option to export a network generated in PyNN to valid NeuroML (i.e. convert a procedural Python description to an instance of the network in an XML file, or potentially a more compact HDF5 file). There is also the ability to specify a network structure in NeuroML and load this for use by a PyNN compliant simulator, though this is limited to the standard point cell models supported in PyNN. Work to ensure compatibility between the two approaches is continuing in the INCF Special Interest Group (SIG) on Standardised Representations of Network Structures.

NeuroML and PyNN are also the two recommended and supported formats for sharing models on the Open Source Brain repository (opensourcebrain.org). 

To summarise how a user might (currently) choose which format to concentrate on:

Choose PyNN if your model:

  • has a neuron model based on a standard point neuron model as supported by PyNN (e.g. Integrate and Fire, Izhikevich, adaptive exponential, simple Hodgkin Huxley)
  • consists of interacting populations of cells where overall network activity is more important than individual cell activity


Choose NeuroML if your model:

  • has cells with more complex ionic conductances
  • features multicompartmental cell models
  • has a relevant 3D structure/cell distribution