Personal tools

PyNN

From Spiking Neural Mark-up Language (SpineML)

Jump to: navigation, search

pynn_header.png


PyNN is described as a simulator independant language for building neuronal network models. It is based on the Python programming language and has simulator support for r range of simulation engines including NEST, NEURON, PCSIM and Brian.

Simulating SpineML with PyNN

The PyNN website describes the PyNN installation process. SpineML can be translated to PyNN simulation code using a single XSLT template which can be applied to an experimental layer model file. For example, the Brett Benchmark Model (using PyNN neurons) from the examples section can be used to generate pynn_simulation.py by using the following syntax.

xsltproc -o pynn_simulation.py PyNN.xsl experiment.xml

The simulation can then be executed in PyNN by executing the Python script with a PyNN simulator as an argument. i.e.

python pynn_simulation.py brian

Any log files will be saved in the local directory.

Downloads

SpineML to PyNN XSLT Template Xml icon.png

Usage and Limitations

Neuron Body Components and Network Layer Connectivity

The major limitation of PyNN is that only the High Level Network layer is supported. PyNN does not have the flexibility to allow the connection of arbitrary components. PyNN is also not able to support the simulation of arbitrary neuron or synapse models described in SpineML. Instead a set fixed set of neuron component models can be used in any Network Layer specification which requires PyNN simulation support. This set of component names matches the names of the PyNN standardised neuron model types. i.e.;

  • IF_curr_exp.xml
  • IF_curr_alpha.xml
  • IF_cond_alpha.xml
  • IF_cond_exp.xml
  • HH_cond_exp.xml
  • EIF_cond_alpha_isfa_ista.xml
  • EIF_cond_exp_isfa_ista.xml

Implementations of these these components are matched to the PyNN standard model names which each have internal implementation within all of the PyNN simulation back-ends. WeightUpdate and PostSynapse models must use the PyNN_WeightUpdate.xml and PyNN_PostSynapse.xml components model respectively. Connectivity between these components within the network layer must be via the following port configurations;

  • PyNN_WeightUpdate.xml
    • input_src_port="spike"
    • input_dst_port="spike"
  • PyNN_PostSynapse.xml
    • input_src_port="w"
    • input_dst_port="w_in"
    • output_src_port="w_out"
    • output_dst_port="w_I" or "w_E" (for Inhibitory or Excitatory respectively)

In future the PyNN.xslt template will be updated to support learning synapses. A PyNN module will also be created to allow PyNN model descriptions to be saved in SpineML format.

Spike Source Inputs

Spike source inputs must be described within the network as populations (using the component model PyNNSpikeSource.xml for the neuron body). This allows spike sources to be connected via projections using the PyNN_WeightUpdate.xml and PyNN_PostSynapse.xml components for synapse behaviour.

Details of specifying spike sources are listed within the experimental layer section. The only limitation is that time varying rates are not supported in PyNN.