NEST is available under the GNU General Public License 2 or later. This means that you can

• use NEST for your research,
• modify and improve NEST according to your needs,
• distribute NEST to others under the same license.

To find out more about NEST, see the list of features and the user documentation. For details about how to contribute to the development of NEST, see the developer space.

## Citing NEST

Please cite NEST in any of your work which is based on NEST.

If you use this version of NEST, please cite it as Bos, Hannah et al. (2015). NEST 2.10.0. Zenodo. 10.5281/zenodo.44222. The full citation is available in different formats on Zenodo.

For all other versions below NEST v2.8.0 use: Gewaltig M-O & Diesmann M (2007) NEST (Neural Simulation Tool) Scholarpedia 2(4):1430.

Here is a suitable BibTeX entry:

@ARTICLE{Gewaltig:NEST,
author = {Marc-Oliver Gewaltig and Markus Diesmann},
title = {NEST (NEural Simulation Tool)},
journal = {Scholarpedia},
year = {2007},
volume = {2},
pages = {1430},
number = {4}
}

If you tell us about your publications that used NEST, we will add it to our publication list, thus making it visible to potential readers.

## Ubuntu 15.10 Live Media with NEST 2.8.0

Live media is available in the OVA format, suitable, for example, for importing into VirtualBox. Useful for trying out NEST without installing it on your computer, especially for Windows and Mac OS X users.

NEST Live Media setup and first steps.

# Current Release: NEST v2.10.0

NEST 2.10.0 contains 303 repository commits by 25 developers since v2.8.0. The most notable changes over v2.8.0 are:

### New features and functionality

• To group connections that belong together, synapse models may now contain a numeric label, specified at creation time. GetConnections can select on this label.
• Array parameters in calls to Connect can now also be specified as lists and tuples.

### New models and model updates

• New Tsodyks synapse model with common properties.
• New STDP triplet synapse (see Pfister & Gerstner, 2006).
• All precise models are now derived from ArchivingNode to support STDP connections.
• parrot_neuron now supports connections onto port 0 and 1.
• Added call to set_spiketime to make STDP work with this model.

### Documentation and example improvements

• Updated examples for the use of CSA in NEST.
• Cleaned up hpc_benchmark.sli, which now also randomizes initial membrane potentials.
• Updated online documentation on kernel parameters, including rng seeds.
• New tests for parrot_neuron_ps and parrot_neuron and for STDP between parrot neurons

### Bug fixes

• parrot_neuron_ps now saves times of outgoing spikes.
• binary_neuron now records spike times.
• pp_pop_psc_delta does not support STDP anymore (as this was not sensible).
• binary neurons and non-binary neurons cannot be connected anymore (which was possible but meaningless)
• MUSIC now behaves correctly upon ResetKernel.
• PyNEST now correctly handles changes to argv made by MPI or MUSIC during initialization.

### Under the hood

• The PyNEST high-level API was split into multiple files and submodules are loaded dynamically.
• Improved tools for static analysis and automatic formatting of code in the CI and locally.
• Fix errors in models when non default tics_per_ms setting is used.

### Contributors since v2.6.0

• Hannah Bos
• Rajakelshmi Deepu
• Moritz Deger
• Sandra Diaz
• Mikael Djurfeldt
• Jochen Martin Eppler
• Jan Hahne
• Moritz Helias
• Tammo Ippen
• Susanne Kunkel
• Frank Michler
• Janne Morén
• Abigail Morrison
• Alexander Peyser
• Hans Ekkehard Plesser
• Maximilian Schmidt
• Alex Seeholzer
• Teo Stocco

### Citation

If you use this version of NEST, please cite it as Bos, Hannah et al. (2015). NEST 2.10.0. Zenodo. 10.5281/zenodo.44222. The full citation is available in different formats on Zenodo.

# NEST v2.8.0

NEST 2.8.0 is distributed under the GNU General Public License version 2 (or later). This version marks the completion of our development efforts during the HBP ramp up phase and consists of 290 repository checkins by 25 developers since 2.6.0. The most notable changes are:

• The new connection framework introduced in NEST 2.6.0 can now handle parameter arrays for the 'all-to-all' and 'one-to-one' rules.
• A new propagator for integrate-and-fire neurons correctly handles the case where membrane and synapse time constants are similar or the same.
• Better documentation and much extended examples for PyNEST improve the discoverability of NEST's features.

All users are encouraged to upgrade and adapt their simulation scripts to the changes in the user interface at this point in time to benefit from the improvements in the new version.

### Changes of default behavior and functionality

• Topology functions are now available from the main namespace in SLI.
• The parameters of sinusoidal_poisson_generator and sinusoidal_gamma_generator were changed as follows:
• dc -> rate
• ac -> amplitude
• freq -> frequency
• phi -> phase; units changed from radian to degrees
• The parameter name amplitude of ppd_sup_generator was changed to relative_amplitude.
• Previously most synapse models prohibited the case of tau_m being equal to tau_syn because of the numerics used. The integrate-and-fire neurons now use a different propagator if tau_syn and tau_m are the same or very similar. This might lead to slightly different membrane potential values in these cases than before. See doc/model_details/IAF_neurons_singularity.ipynb for details

### New models and examples

• spike_dilutor repeats incoming spikes with a certain probability.
• correllospinmatrix_detector allows to measure the covariance matrix from several inputs.
• brunel-2000_newconnect.sli demonstrates the use of the new connection framework.
• brunel-2000_newconnect_dc.sli using DC instead of Poisson stimulation.
• precise_spiking.py compares precise and grid-constrained neuron model.

### Documentation improvements

• All PyNEST examples are now extensively documented and available from nest-simulator.org.
• The Potjans_2014 example now has an updated documentation.
• Topology user manual now explains how to connect devices to subregions of layers.
• noise generator now has documentation in form of a Jupyter Notebook in doc/model_details/noise_generator.ipynb.
• The voltmeter is now documented and the documentation of multimeter is fixed.
• The emit() function in precise models is now properly documented.
• The online help of cont_delay_synapse now has usage examples.

### Bug fixes

• pp_psc_delta now works correctly with multiple calls to Simulate
• The membrane potential of izhikevichis now more consistent with the original Matlab implementation.
• hpc_benchmark.sli now aborts when attempting to run with too few local neurons to record from.

### Minor changes

• SLI can now extract information about their origin in the revision control system.
• Module handling in the build system got simplified and cleaned up.
• Topology free layers now work for single neuron layers.
• CreateLayer is up to 100-fold faster for large networks.
• pp_pop_psc_delta uses a refined check for small spike probability.
• The logos were updated and are available in extras/logos.
• The PyNEST testsuite now also runs on older NumPy and Python versions.
• Rebuilding the NEST build system now requires autoconf >= 2.63.
• Renovations to MyModule's build system allow to also build modules on BlueGene.
• The last occurrences of CPEX were removed from the Communicator class.
• New scripts execute static code analysis and formatting locally as TravisCI would do it.

### Testsuite improvements

• CreateLayer now has a regression test.
• iaf_cond_alpha_mc and cont_delay_synapse have new unit tests.
• do_tests.sh now returns non-zero exit code in case of failing tests.

### Contributors since v2.6.0

• Claudia Bachmann
• Hannah Bos
• Rajalekshmi Deepu
• Moritz Deger
• Renato Duarte
• Jochen M. Eppler
• Marc-Oliver Gewaltig
• Espen Hagen
• Moritz Helias
• Tammo Ippen
• Jakob Jordan
• Susanne Kunkel
• Frank Michler
• Abigail Morrison
• Robin Pauli
• Alexander Peyser
• Luis Riquelme
• Hans Ekkehard Plesser
• Wolfram Schenk
• Maximilian Schmidt
• Jannis Schuecker
• Johanna Senk
• Hesam Setareh
• Ali Shirvani
• Tiziano Zito

### Citation

If you use this version of NEST, please cite it as Eppler, Jochen Martin et al. (2015). NEST 2.8.0. Zenodo. 10.5281/zenodo.32969. The full citation is available in different formats on Zenodo.

# NEST v2.6.0

NEST 2.6.0 is a fast and efficient simulator for networks of spiking neurons and distributed under the GNU General Public License version 2 (or later). It contains new memory-saving data structures for the storage of connections and many general improvements over the 2.4 series. The most notable changes are:

• A complete re-write of the connection infrastructure, which reduces memory consumption considerably.
• Many new tests to ensure and guarantee a continued quality of the code-base.
• Updated and extended documentation

All users are encouraged to upgrade and adapt their simulation scripts to the changes in the user interface at this point in time to benefit from the bug fixes and improvements.

IMPORTANT: some of the defaults in NEST changed. You might have to adapt your scripts accordingly. See the release notes for details.

### New connection infrastructure

This release of NEST contains a complete re-write of the data structures for storing neural connections as described in the article Spiking network simulation code for petascale computers by Susanne Kunkel et al. (doi:10.3389/fninf.2014.00078). They adapt to their load and thus require only minimal overhead compared to conventional C++ vectors. The new infrastructure comes with synapse model variants optimized for HPC (suffixed by "_hpc"), which can be used if less than 65k neurons are simulated per MPI process and the receptor_type is not set for this synapse model.

In addition to the new data structures, an optional pool-based memory allocator allows to save even more memory on very large machines. It can be enabled by adding -DPMA to the CFLAGS and CXXFLAGS at compile time.

The improvements required to change the API for neuron and synapse models.

### Changes of default behavior and functionality

The default connection rule of the new connection framework introduced in 2.4.0 (see http://nest-simulator.org/Connection_Management) changed from one_to_one to all_to_all as this rule is much more frequent in most modelling tasks.

The default rounding scheme for delays changed from always rounding up to the nearest multiple of the resolution (next step value) to mathematically rounding to the nearest multiple, i.e., for a resolution of 0.1 ms, a delay of 0.14 ms now will be rounded down to 0.1 ms, a delay of 0.16 ms rounded up to 0.2 ms; in the past, both were rounded up to 0.2 ms.

Nodes are now always round robin distributed onto threads and processes, while it was possible to force them to a specific virtual process using the property children_on_same_vp of the subnet they belong to.

To remove ambiguousness, we renamed the property node_type contained in the status dictionaries of neurons, devices and synapse to element_type. The field can contain the values "synapse", "stimulator", "recorder", "neuron", "structure", or "other".

### New functionality

• The device correlomatrix_detector allows to measure the covariance matrix from several spiking neurons online.
• The function SetFakeNumProcesses allows to fake the process of building the network for a parallel machine using only a single compute node. This is helpful to estimate the amount of memory needed for large-scale simulations prior to running a simulation.
• The script nest_vars.sh can be used to set the environment variables PATH and PYTHONPATH to ease switching between different installed versions of NEST

### Minor changes

• Synapse model static_synpase_hom_wd has been replaced by static_synapse_hom_w.
• Initialization of pp_pop_psc is now done properly to allow multiple calls to Simulate in a simulation script.
• Improved support for the Clang compiler and MacOS.
• SLI dictionaries can now be nested without causing memory leaks and crashes.
• NEST now contains information about the revision in a revision control system it is based on to make it easier to pinpoint bugs in releases to a specific internal version.
• The error state of libltdl is now properly reset in order to circumvent errors when loading custom modules.
• The microcircuit model example (Potjans&Diesmann, doi:10.1093/cercor/bhs358) is now installed.
• The neuron model iaf_psc_exp now supports zero refractory time.
• Create now explicitly mentions the absence of GSL as a possible reason, when a model is not found.
• SLI command memory_thisjob now supports Linux, OSX and IBM BlueGene.

### Documentation improvements

The tutorial "NEST by Example" has been updated to reflect the recent changes in NEST. To make it easier to carry out performance benchmarks with NEST, the HPC benchmarks used by Kunkel et al. (doi:10.3389/fninf.2014.00078) have been added to the examples contained in NEST. Moreover, the documentation of the SLI function getinterval has been extended and clarified and the doxygen configuration files were updated to support current versions of doxygen.

### Better testing

The test coverage has been considerably increased from 427 tests in NEST 2.4.2 to 714 in 2.6.0. Where available, NEST now uses Python's nosetests instead of the custom test harness for running the PyNEST tests. This makes testing easier and more reliable and produces reports in the standard JUnit XML format, which can be analyzed by a selection of existing tools.

### Changes under the hood

• Simplified and refactored the Time class.
• Removed status flags bitset in nodes in favor of simple Boolean flags.
• Handle exceptions in node preparation in a thread-safe way.
• Removed Pthreads in favor of OpenMP based parallelization.
• Cleanup of internal connect interface and functions.

### Memory management

Several memory leaks and segmentation faults were found and fixed by adding a destructor to Topology's ntree class and by fixing the creation of ArrayDatums. Moreover, the function GetDefaults is now thread-safe when retrieving the number of connections from a synapse model.

### Deprecated functionality

The following SLI/PyNEST functions are obsolete will be removed in the next version:

• The functionality of the functions (Random)DivergentConnect and (Random)ConvergentConnect is now integrated into Connect. See http://www.nest-simulator.org/connection_management for documentation on how to convert your scripts to the new syntax.
• The old connect framework in PyNEST ('OneToOneConnect') will be removed in favor of the new connect framework.
• FindConnections is superseded by GetConnections.

### Contributors since v2.4.2

• Hannah Bos
• Moritz Deger
• Markus Diesmann
• Mikael Djurfeldt
• Renato Duarte
• Jochen Martin Eppler
• Marc-Oliver Gewaltig
• Jan Hahne
• Moritz Helias
• Tammo Ippen
• Jakob Jordan
• Susanne Kunkel
• Abigail Morrison
• Alex Peyser
• Hans Ekkehard Plesser
• Wolfram Schenck
• Maximilian Schmidt
• Jannis Schücker
• Hesam Setareh
• Yury V. Zaytsev

# NEST v2.4.2

This is a bugfix and maintenance release for v2.4.1. Users are advised to update their installation as soon as possible. The release contains the following improvements and fixes for minor bugs:

• Updated MUSIC examples to use the new Connect framework and allow music_channel as an alias for receptor_type during connection setup.
• Turned PyNEST deprecation warning into a decorator and beautified URLs in the output to allow IPython Notebooks to parse and link them properly.
• Improved performance of SLI functions token_s and symbol_s by a factor of 1000 by replacing a loop by an explicit function call.
• Made CyNEST handle parameters passed as Unicode strings in all Python versions by using basestring instead of str for Python versions
• Fixed segmentation fault produced by additional command line arguments for Python when PyNEST was imported.

### Contributors in addition to v2.4.0 and v2.4.1

• Oliver Breitwieser
• Jan Hahne
• Frank Michler

# NEST v2.4.1

This is a bugfix and maintenance release for v2.4.0, in which the Topology Module contains a bug which leads to the creation of too few connections (N/num_threads instead of N) when using the divergent connection_type in ConnectLayers in a multi-threaded mode. Users are advised to update their installation as soon as possible.

Here's a detailed list of changes:

• Fix multi-threaded creation of divergent connections in Topology Module and add a regression test for this.
• Add SetNumRecProcesses to PyNEST to enable the Global spike detection mode.
• Update Toplogy Manual for NEST 2.4 and to be Py3k compatible.
• Use proper syntax for getting default synapse model in the ConnectionGenerator.
• Update the reference in the README.txt of the microcircuit model by Potjans&Diesmann.
• Remove special characters from iaf_chs_2007 that confused the copyright-header checker.

# NEST v2.4.0

NEST 2.4.0 is distributed under the GNU General Public License version 2 (or later) and contains many new features, neuron models and general improvements. The most important ones are:

• A Python 3.0 compatible re-implementation of the Python interface.
• A new framework for setting up connections and their parameters.
• A new spike detection mode with greatly improved I/O performance.
• More flexible framework for working with random distributions.
• Support for connectivity-generating libraries through libneurosim.

All users are encouraged to upgrade and adapt their simulation scripts to the changes in the user interface at this point in time to benefit from the bug fixes and improvements.

### Re-implementation of PyNEST

The Python interface to NEST (PyNEST) has been re-implemented from scratch. The new implementation (CyNEST) is based on Cython and provides the following improvements over the previous version:

• Support for Python 2.6, 2.7, and 3.x
• Installation now works properly on all platforms
• Better extensibility and maintainability

See Zaytsev & Morrison (2014), doi:10.3389/fninf.2014.00023 for details of the new interface.

Minor changes to PyNEST are:

• PyNEST's visualization.plot_network() can now create PNGs or PDFs
• Importing SciPy after NEST does not cause segfaults anymore

Please note that CyNEST requires Cython version 0.19.2 or higher to regenerate the source files (only for developers). This can be installed using pip install --user --upgrade cython.

### New routines for setting up connectivity

The Connect function of NEST has been completely re-written in order to support a more flexible setup of connectivity. In particular this means that connectivity is now specified using a rule ("all-to-all", "one-to-one", "fixed-indegree", "fixed-outdegree", "fixed-total-number", or "pairwise-bernoulli") and a dictionary with synapse parameters. All connection parameters can now be randomized already during connection setup by specifying the random distribution.

In addition to more flexibility, the new framework is faster due to a massive clean-up of the code and OpenMP parallelization throughout.

If you are using SLI, all your scripts will be working without changes. PyNEST's Connect function was renamed to OneToOneConnect. Connect now uses the new semantics as explained in the documentation.

The new Connect function is provided as a technology preview. This means that while the basic user interface will stay, the functionality and performance will be further extended in future releases.

### Global spike detector

In parallel simulations on very large machines without local disks, saving recorded spikes often leads to performance problems, because each spike detector will write out one file per virtual process. This problem is now ameliorated by a new spike detection mode, which can be activated by the users of such machines. In the new mode, all spike detectors are allocated on a distinct set of processes.

See http://www.nest.simulator/global_spike_detector for details on the new recording mode and how to activate it.

### Random number generators and distributions

In the process of implementing the new connection routines, we found several performance problems in NEST's librandom and inconsistencies with PyNN ([1]). To solve these problems, we changed several aspects of librandom.

The random deviate generators in NEST have been extended and modified to support random initialisation of synapse parameters for the new connection routine, and to achieve greater similarity between NEST and PyNN. For most users, these changes only add new features. Scripts using uniformint or normal_clipped need to be adapted as explained in http://www.nest-simulator.org/random_numbers.

To achieve consistent results for both global and local spike detector mode, the seed of the global RNG was changed from n_vp+1 to 0. To allow the comparison of new results with those obtained with earlier versions of NEST, this seed has to be set to n_vp+1 manually. See http://www.nest.simulator/global_spike_detector for details.

If NEST is compiled with support for GSL, gsl_rng_knuth2002 is now used instead of knuthlfg as per-thread and global random number generator (RNG) to improve performance. Both RNGs create identical sequences, so new simulation results are still comparable to old ones.

### Support for connectivity-generating libraries

In NEST 2.4, the direct implementation of the ConnectionGenerator interface has been replaced in favor of support for libneurosim (http://software.incf.org/software/libneurosim). This allows to couple all connectivity-generating libraries (e.g. the Connection-set algebra; http://software.incf.org/software/csa) with NEST, which support libneurosim.

See Djurfeldt et al. (2014), doi:10.3389/fninf.2014.00043 for details about the new interface.

### New models and model improvements

• stdp_facetshw_synapse mimics the restrictions of the neuromorphic HMF developed in the context of FACETS and BrainScaleS.
• aeif_cond_alpha_RK5, which is independent of the GSL by using a custom version of the RK5 solver.
• aeif_cond_alpha_multisynapse is a variant of the exponential integrate-and-fire model with multiple synaptic time constants.
• quantal_std_synapse is a probabilistic synapse model with short term plasticity (Fuhrmann et al. 2002, doi:10.1152/jn.00258.2001).
• iaf_chs_2007 is a spike-response model (Carandini et al. 2007, doi:10.1167/7.14.20).
• iaf_chxk_2008 is a conductance based leaky integrate-and-fire neuron model (Casti et al. 2008, doi:10.1007/s10827-007-0053-7).
• Weighted excitatory and inhibitory input spikes are recordable in iaf_psc_exp and iaf_psc_delta.
• Excitatory and inhibitory synaptic currents are recordable in iaf_psc_exp and iaf_psc_alpha.
• Recovery variable U_m is recordable in izhikevich.
• spike_detector now throws an error for spike times of 0.

### Improved quality and documentation

Compared to v2.2.2, we have increased the number of unit tests from 270 to 418. This improvement guarantees the continued quality of NEST on the computer of the user and allows to find and fix problems quickly. To run the testsuite after installation, run make installcheck from the build directory.

Many examples have been updated and extended to demonsrate the usage of NEST. In addition, we have added the full microcircuituit model by Potjans & Diesmann (2014), doi:10.1093/cercor/bhs358.

In order to prevent memory leaks by forgotten arguments on the SLI stack, PyNEST now can do stack checking and runs its own testsuite in this mode.

### New SLI functions and improvements

• Added an eval function to execute SLI code in strings.
• SetMaxBuffered which sets the max buffered parameter of a MUSIC input port.
• eq_dv and eq_iv to test double and int vector equality.
• cva applied to an array now leaves array elements as they are if they can not be converted to an array.
• round now converts to double if applied on an integer.
• cvi is identity operation for integers.
• Take now also works for strings.

### Deprecated functionality

The following SLI/PyNEST functions are obsolete will be removed in the next version:

• The functionality of the functions (Random)DivergentConnect and (Random)ConvergentConnect is now integrated into Connect. See http://www.nest-simulator.org/connection_management for documentation on how to convert your scripts to the new syntax.
• The old connect framework in PyNEST (OneToOneConnect) will be removed in favor of the new connect framework.
• FindConnections is superseded by GetConnections.
• Support for plain POSIX threads will be removed in favor of OpenMP.

### Contributors since v2.2.2

• Claudia Bachmann
• Hannah Bos
• Ekatarina Brocke
• David Dahmen
• Moritz Deger
• Markus Diesmann
• Mikael Djurfeldt
• Håkon Enger
• Jochen Martin Eppler
• Marc-Oliver Gewaltig
• Moritz Helias
• Tammo Ippen
• Jakob J. Jordan
• Susanne Kunkel
• Abigail Morrison
• Mikael Naveau
• Daniel Peppicelli
• Alexander Peyser
• Thomas Pfeil
• Hans Ekkehard Plesser
• Wolfram Schenck
• Maximilian Schmidt
• Jannis Schuecker
• Yury V. Zaytsev

### WARNING!

The Topology Module of this version of NEST contains a bug which leads to the creation of too few connections (N/num_threads instead of N) when using the divergent connection_type in ConnectLayers in a multi-threaded mode. Please update your installation to at least v2.4.1!

# NEST v2.2.2

NEST 2.2.2 is a bugfix releas that contains fixes to the kernel, SLI, build system and other areas.

### New models and devices:

• iaf_psc_alpha_multisynapse
• iaf_psc_exp_multisynapse
• mcculloch_pitts_neuron
• ginzburg_neuron
• spin_detector
• sinusoidal_gamma_generator

### Updated models and devices:

• smp_generator is replaced by sinusoidal_poisson_generator, which sends an individual spike train to each of its targets by default; be wary when updating your code! In order to replicate the old behavior of the smp_generator (all targets receive the same spike train), set /individual_spike_trains to false on the sinusoidal_poisson_generator model before creating a generator node.
• iaf_psc_alpha: bugfixes
• stdp_dopamine_synapse: bugfixes

### PyNEST:

• fixes to the DataConnect interface

### Topology:

• more efficient GetTargetNodes implementation
• lognormal distribution for parameter values

# NEST v2.2.0

### Features

NEST 2.2.0 contains substantial improvements and many new features. The most important ones are:

• Better speed, scaling, and memory footprint
• Support for connection set algebra (CSA)
• Data driven network generation

### Better speed, scaling, and memory footprint

Many of NEST's major data structures have been re-written to improve speed, scalability and memory footprint.

The most significant changes concern the simulation kernel and the way it represents networks internally. As a result, NEST has a considerably lower memory consumption and improved scaling, in particular when using a large number of cores. The full details and theory behind these changes are published in two papers:

#### Other improvements

• Many connection functions now use OpenMP to connect neurons in parallel.
• OpenMP has also replaced Pthreads as a default for multi-threaded simulations, yielding better scaling.
• SLI, the built-in simulation language interpreter of NEST, is now up to 5 times faster.
• The topology library has been re-written, greatly improving its speed and reducing memory requirements.

### Support for connection set algebra (CSA)

NEST 2.2.0 supports the Connection Set Algebra by Mikael Djurfeldt (doi:10.1007/s12021-012-9146-1). The Connection Set Algebra is a powerful notation that allows to formulate complex network architectures in a concise manner. The following examples illustrates how the CSA is used to connect a random network:

import csa
import nest

# Random connectivity with connection probability 0.1
cs = csa.random(0.1)

# Create two neuron populations
pop1 = nest.LayoutNetwork("iaf_neuron", [16])
pop2 = nest.LayoutNetwork("iaf_neuron", [16])

# Connect them using the connection generator cs
nest.CGConnect (pop0, pop1, cs)

### Data driven network generation

NEST 2.2.0 has a new function DataConnect which allows the efficient connection and parametrization of connections from connection data. DataConnect will efficiently create and parameterize synapses.

The new function GetConnections allows to efficiently retrieve the afferent and efferent connections of a neuron or the connections between groups of neurons. The combination of GetConnections and DataConnect allows users to retrieve, save, and restore the synaptic state of a network. This is particularly useful in models with synaptic plasticity and learning.

### Topology library

The topology library supports the creation of spatially organized networks, e.g. for models of the visual system. NEST 2.2.0 supports 3-dimensional networks, where neurons are placed in a volume rather than on a sheet. There is also a new API to add user defined connection kernels. Please refer to the updated user manual and examples for more details.

### Detailed list of changes

#### Kernel and PyNEST changes

• Major improvements to the memory consumption and scaling properties of the simulation kernel as described in Helias et al. (2012) and Kunkel et al. (2012).
• NEST now supports the connection generator interface, an interface allowing externals to generate connectivity, see http://software.incf.org/software/libneurosim.
• Support for the Connection Set Algebra (CSA) by Mikael Djurfeldt has been added, see http://software.incf.org/software/csa and doi:10.3389/conf.fninf.2011.08.00085.
• The new command GetConnections allows the fast retrieval of connections and will replace the slow and memory intensive FindConnections; FindConnections is deprecated and will be removed in future releases.
• The new command DataConnect allows to efficiently create network connections from data, e.g. when synapse parameters are explicitly given.
• Connection objects are now represented as Python lists or NumPy arrays; code which relies on the old connection dictionaries will have to be changed.
• The function GetNodes has been removed, one has to explicitly use either GetLocalNodes, or GetGlobalNodes.
• Support for node addresses has been removed and with it the functions GetAddress and GetGID.
• Threading support for OpenMP has been added and is the default now.
• Many connect routines and node calibration are now parallel, using OpenMP.
• New function CGConnect for connecting neurons using connection generators (see doc/conngen.txt).
• New function abort, which terminates NEST and all its MPI processes without deadlocks.

#### Topology changes

• Major rewrite which resulted in improved performance and reduced memory requirements for freely placed neurons.
• Topology now supports 3-dimensional layers.
• 'Nested' layer layout (subnets within subnets) is no longer supported; this was previously discouraged for performance reasons.
• Composite layers (layers with multiple nodes per position) no longer contain subnets.
• Semantics of GetElement have changed, in particular a list of GIDs is returned for a composite layer, where previously a single subnet GID would be returned.
• GetPosition, Displacement and Distance now only work for nodes local to the current MPI process.
• See the updated Topology User Manual for details.

#### SLI Interpreter improvements

• The SLI Interpreter has been optimized for speed and memory; in particular handling and lookup of names is much faster now.
• SLI now supports fixed size vectors of doubles and integers. The new types are called IntVector (/intvectortype) and DoubleVector (/doublevectortype).
• NumPy arrays are automatically converted to SLI vectors to conserve memory and CPU time.
• SLI has new functions arange, zeros and ones to easily create vectors.
• The vector types support all common math operations.
• New functions DictQ and SubnetQ to test the argument types for being a dictionary or a subnet, respectively.

#### Miscellaneous changes

• The installation prefix should now be given explicitly, since installing to the default /usr/local is strongly discouraged.
• Substantial documentation updates; a large number of broken documentation cross-references has been resolved.
• Fixed numerical instabilities of the AdEx models (aeiaf_cond_exp and aeiaf_cond_alpha).
• New significantly faster binomial random number generator replaced the previous implementation in librandom (#390).
• New wrapper for the GSL binomial random deviate generator under the name gsl_binomial.
• Support for IBM BlueGene and K supercomputers (configure with --enable-bluegene=l/p/q).
• The command setenvironment has been removed; this functionality was broken on Mac OS X for quite some time.
• Much improved test coverage for SLI, PyNEST and MPI in particular.
• Many new SLI and PyNEST examples and updates for the existing ones.
• Code quality of NEST and all examples is continuously monitored now using CI (Zaytsev & Morrison, 2012, doi:10.3389/fninf.2012.00031).

### Known issues

• The simulation progress indicator does not work with OpenMP and some error messages are unreadable.
• On multiarch systems (i.e. 64-bit Red Hat Linux) one has to manually move all PyNEST-related files from $PREFIX/lib/python2.6/site-packages to $PREFIX/lib64/python2.6/site-packages; this will be resolved in next releases. This also breaks make installcheck.
• Known compatibility problems with PyNN are now fixed in the 0.7 svn branch, which will be released early next year.

### Contributors since v.2.0.0

• Giuseppe Chindemi
• Moritz Deger
• Markus Diesmann
• Mikael Djurfeldt
• Håkon Enger
• Jochen Martin Eppler
• Marc-Oliver Gewaltig
• Moritz Helias
• Susanne Kunkel
• Abigail Morrison
• Eilif Muller
• Hans Ekkehard Plesser