============
Introduction
============

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_, PCSIM_ and Brian_).

The API has two parts, a [wiki:LowLevelAPI low-level, procedural API (functions ``create()``, ``connect()``, ``set()``, ``record()``, ``record_v()``), and a [wiki:HighLevelAPI high-level, object-oriented API] (classes ``Population`` and ``Projection``, which have methods like ``set()``, ``record()``, ``setWeights()``, etc.). 

The low-level API is good for small networks, and perhaps gives more flexibility. The high-level API is good for hiding the details and the book-keeping, allowing you to concentrate on the overall structure of your model.

The other thing that is required to write a model once and run it on multiple simulators is standard cell and synapse models. PyNN translates standard cell-model names and parameter names into simulator-specific names, e.g. standard model ``IF_curr_alpha`` is ``iaf_neuron`` in NEST and ``StandardIF`` in NEURON, while ``SpikeSourcePoisson`` is a ``poisson_generator`` in NEST and a ``NetStim`` in NEURON.

Even if you don't wish to run simulations on multiple simulators, you may benefit from writing your simulation code using PyNN's powerful, high-level interface. In this case, you can use any neuron or synapse model supported by your simulator, and are not restricted to the standard models.

PyNN is a work in progress, but is already being used for several large-scale simulation projects.

[wiki:Download Download] the current stable release of the API (0.6), or get the development version from the `Subversion repository`_ .

Licence
-------

The code is released under the CeCILL_ licence.


Citing PyNN
-----------

If you publish work using or mentioning PyNN, we would appreciate it if you would cite the following paper:

Davison AP, Brüderle D, Eppler JM, Kremkow J, Muller E, Pecevski DA, Perrinet L and Yger P (2009) PyNN: a common interface for neuronal network simulators. Front. Neuroinform. 2:11 doi:10.3389/neuro.11.011.2008

http://www.frontiersin.org/neuroinformatics/paper/10.3389/neuro.11/011.2008/

Questions/Bugs/Enhancements
---------------------------

If you find a bug in PyNN, or wish to request a new feature, please go the `PyNN website`_, click on "New Ticket", and fill in the form.

If you have questions or comments about PyNN, please post a message on the `NeuralEnsemble Google group`_.

.. _Python: http://www.python.org/
.. _CeCILL: http://www.cecill.info/
.. _NEURON: http://www.neuron.yale.edu/neuron/
.. _NEST:   http://www.nest-initiative.org/?page=Software
.. _PCSIM:  http://sourceforge.net/projects/pcsim/
.. _Brian:  http://briansimulator.org/
.. _`Subversion repository`: https://neuralensemble.org/svn/PyNN/trunk
.. _`PyNN website`: http://neuralensemble.org/PyNN/
.. _`NeuralEnsemble Google group`: http://groups.google.com/group/neuralensemble