Projections

class Projection(presynaptic_population, postsynaptic_population, connector, synapse_type=None, source=None, receptor_type=None, space=<pyNN.space.Space object>, label=None)[source]

Bases: Projection

A container for all the connections of a given type (same synapse type and plasticity mechanisms) between two populations, together with methods to set the parameters of those connections, including the parameters of plasticity mechanisms.

Arguments:
presynaptic_neurons and postsynaptic_neurons:

Population, PopulationView or Assembly objects.

source:

string specifying which attribute of the presynaptic cell signals action potentials. This is only needed for multicompartmental cells with branching axons or dendrodendritic synapses. All standard cells have a single source, and this is the default.

receptor_type:

string specifying which synaptic receptor_type type on the postsynaptic cell to connect to. For standard cells, this can be ‘excitatory’ or ‘inhibitory’. For non-standard cells, it could be ‘NMDA’, etc. If receptor_type is not given, the default values of ‘excitatory’ is used.

connector:

a Connector object, encapsulating the algorithm to use for connecting the neurons.

synapse_type:

a SynapseType object specifying which synaptic connection mechanisms to use.

space:

TO DOCUMENT

pre

The pre-synaptic Population, PopulationView or Assembly.

post

The post-synaptic Population, PopulationView or Assembly.

source

A string specifying which attribute of the presynaptic cell signals action potentials.

target

Name of the postsynaptic mechanism type (e.g. ‘excitatory’, ‘NMDA’).

label

A label for the Projection.

rng

The RNG object that was used by the Connector.

synapse_dynamics

The SynapseDynamics object that was used to specify the synaptic plasticity mechanism, or None if the synapses are static.

__len__()[source]

Return the number of connections on the local MPI node.

__getitem__(i)[source]

Return the /i/th connection within the Projection.

__iter__()[source]

Return an iterator over all connections on the local MPI node.

property connections
MULTI_SYNAPSE_OPERATIONS = {'first': <function Projection.<lambda>>, 'last': <function Projection.<lambda>>, 'max': <built-in function max>, 'min': <built-in function min>, 'sum': <built-in function iadd>}
annotate(**annotations)[source]
describe(template='projection_default.txt', engine='default')[source]

Returns a human-readable description of the projection.

The output may be customized by specifying a different template togther with an associated template engine (see pyNN.descriptions).

If template is None, then a dictionary containing the template context will be returned.

get(attribute_names, format, gather=True, with_address=True, multiple_synapses='sum')[source]

Get the values of a given attribute (weight or delay) for all connections in this Projection.

attribute_names:

name of the attributes whose values are wanted, or a list of such names.

format:

“list” or “array”.

gather:

If True, node 0 gets connection information from all MPI nodes, other nodes get information only from connections that exist in this node. If ‘all’, all nodes will receive connection information from all other nodes. If False, all nodes get only information about local connections.

With list format, returns a list of tuples. By default, each tuple contains the indices of the pre- and post-synaptic cell followed by the attribute values in the order given in attribute_names. Example:

>>> prj.get(["weight", "delay"], format="list")[:5]
[(0.0, 0.0, 0.3401892507507171, 0.1),
 (0.0, 1.0, 0.7990713166233654, 0.30000000000000004),
 (0.0, 2.0, 0.6180841812877726, 0.5),
 (0.0, 3.0, 0.6758149775627305, 0.7000000000000001),
 (0.0, 4.0, 0.7166906726862953, 0.9)]

If with_address is set to False, then the tuples will contain only the attribute values, not the cell indices.

With array format, returns a tuple of 2D NumPy arrays, one for each name in attribute_names. The array element X_ij contains the attribute value for the connection from the ith neuron in the pre- synaptic Population to the jth neuron in the post-synaptic Population, if a single such connection exists. If there are no such connections, X_ij will be NaN. Example:

>>> weights, delays = prj.get(["weight", "delay"], format="array")
>>> weights
array([[ 0.66210438,         nan,  0.10744555,  0.54557088],
       [ 0.3676134 ,         nan,  0.41463193,         nan],
       [ 0.57434871,  0.4329354 ,  0.58482943,  0.42863916]])

If there are multiple such connections, the action to take is controlled by the multiple_synapses argument, which must be one of {‘last’, ‘first’, ‘sum’, ‘min’, ‘max’}.

Values will be expressed in the standard PyNN units (i.e. millivolts, nanoamps, milliseconds, microsiemens, nanofarads, event per second).

getDelays(**kwargs)

Deprecated. Use get('delay', format, gather) instead.

getSynapseDynamics(**kwargs)

Deprecated. Use get(parameter_name, format, gather) instead.

getWeights(**kwargs)

Deprecated. Use get('weight', format, gather) instead.

initialize(**initial_values)[source]

Set initial values of state variables of synaptic plasticity models.

Values passed to initialize() may be:
  1. single numeric values (all neurons set to the same value)

  2. RandomDistribution objects

  3. a 2D array with the same dimensions as the connectivity matrix (as returned by get(format=’array’)

  4. a mapping function, which accepts a single float argument (the distance between pre- and post-synaptic cells) and returns a single value.

Values should be expressed in the standard PyNN units (i.e. millivolts, nanoamps, milliseconds, microsiemens, nanofarads, event per second).

Example:

prj.initialize(u=-70.0)
printDelays(**kwargs)

Deprecated. Use save('delay', file, format, gather) instead.

printWeights(**kwargs)

Deprecated. Use save('weight', file, format, gather) instead.

randomizeDelays(**kwargs)

Deprecated. Use set(delay=rand_distr) instead.

randomizeSynapseDynamics(**kwargs)

Deprecated. Use set(name=rand_distr) instead.

randomizeWeights(**kwargs)

Deprecated. Use set(weight=rand_distr) instead.

save(attribute_names, file, format='list', gather=True, with_address=True)[source]

Print synaptic attributes (weights, delays, etc.) to file. In the array format, zeros are printed for non-existent connections.

Values will be expressed in the standard PyNN units (i.e. millivolts, nanoamps, milliseconds, microsiemens, nanofarads, event per second).

saveConnections(**kwargs)

Deprecated. Use save('all', file, format='list', gather=gather) instead.

set(**attributes)[source]

Set connection attributes for all connections on the local MPI node.

Attribute names may be ‘weight’, ‘delay’, or the name of any parameter of a synapse dynamics model (e.g. ‘U’ for TsodyksMarkramSynapse).

Each attribute value may be:
  1. a single number

  2. a RandomDistribution object

  3. a 2D array with the same dimensions as the connectivity matrix (as returned by get(format=’array’)

  4. a mapping function, which accepts a single float argument (the distance between pre- and post-synaptic cells) and returns a single value.

Weights should be in nA for current-based and µS for conductance-based synapses. Delays should be in milliseconds.

Note that where a projection contains multiple connections between a given pair of neurons, all these connections will be set to the same value.

setDelays(**kwargs)

Deprecated. Use set(delay=d) instead.

setSynapseDynamics(**kwargs)

Deprecated. Use set(parameter_name=value) instead.

setWeights(**kwargs)

Deprecated. Use set(weight=w) instead.

property shape
size(gather=True)[source]
Return the total number of connections.
  • only local connections, if gather is False,

  • all connections, if gather is True (default)

weightHistogram(**kwargs)

Deprecated. Use np.histogram() instead.

connect(*args, **kwargs)

Deprecated. Use Projection() instead.