orphan: |
---|
Since 2014 (Djurfeldt et al., 2014) NEST supports the Connection Generator Interface. This allows to couple connection generating libraries to NEST without having to modify NEST itself.
In contrast to the built-in connection functions and the Topology module, the Connection Generator Interface has a different way for specifying the connectivity:
- pre- and postsynaptic neurons are created
- a Connection Generator object is created which specifies the connectivity pattern
- the Connection Generator is applied to the sets of source and target
neurons using the
CGConnect
function.
In Python, the csa
module can be used directly to specify the
connectivity.
import nest
import csa
# Create the neurons
sources = nest.Create("iaf_psc_alpha", 2)
targets = nest.Create("iaf_psc_alpha", 2)
# Create the Connection Generator for one-to-one connectivity
cg = csa.cset(csa.oneToOne)
# Connect the neurons
nest.CGConnect(sources, targets, cg)
# Verify the connectivity
conn = nest.GetConnections(sources)
print((c['source'], c['target']) for c in nest.GetStatus(conn))
In SLI, the CSA library is not available directly and the Connection
Generator has to be created by deserializing an XML string (or file). To
do so, we first have to select a library to perform the parsing of the
serialized string using CGSelectImplementation
. It takes the root
tag of the serialization and the name of the C++ library as arguments.
We then create the Connection Generator from the serialization using
CGParse
. As in PyNEST, these ingredients can be passed on to
CGConnect
.
% Select the connection generating library
(CSA) (libcsa.so) CGSelectImplementation
% Parse the serialized connection generator
(<?xml version='1.0' encoding='UTF-8'?><CSA xmlns="http://software.incf.org/software/csa/1.0"><oneToOne/></CSA>) CGParse /cg Set
% Create the neurons
/iaf_psc_alpha 4 Create ;
/sources [ 1 2] def
/targets [3 4] def
% Connect the neurons
cg sources targets CGConnect
% Verify the connectivity
<< /source [ 1 2] >> GetConnections { GetStatus /target get } Map ==