3.6. Population

A Population object represents a group of identical neurons. It is associated with a geometry (defining the number of neurons and optionally its spatial structure), a neuron type and optionally a name.

class ANNarchy.Population(geometry, neuron, name=None, stop_condition=None, storage_order='post_to_pre', copied=False)[source]

Represents a population of homogeneous neurons.


  • geometry: population geometry as tuple. If an integer is given, it is the size of the population.
  • neuron: instance of ANNarchy.Neuron
  • name: unique name of the population (optional).
  • stop_condition: a single condition on a neural variable which can stop the simulation whenever it is true.

Clears all spiking events previously emitted (history of spikes, delayed spikes).

Can be useful if you do not want to totally reset a population (i.e. all variables), only to clear the spiking history between two trials.

Note: does nothing for rate-coded networks.


Tells spiking neurons in the population to compute their mean firing rate over the given window and store the values in the variable r.

This method has an effect on spiking neurons only.

If this method is not called, r will always be 0.0. r can of course be accessed and recorded as any other variable.


  • window: window in ms over which the spikes will be counted.

Returns the coordinates of a neuron based on its rank.


  • rank: rank of the neuron.

Temporarily disables computations in this population (including the projections leading to it).

You can re-enable it with the enable() method.


(Re)-enables computations in this population, after they were disabled by the disable() method.

The status of the population is accessible through the enabled flag.


Returns the value of neural variables and parameters.


  • name: attribute name as a string.

Load the saved state of the population.

Warning: Matlab data can not be loaded.


  • filename: the filename with relative or absolute path.



Returns an IndividualNeuron object wrapping the neuron with the provided rank or coordinates.

normalized_coordinates_from_rank(rank, norm=1.0)[source]

Returns normalized coordinates of a neuron based on its rank. The geometry of the population is mapped to the hypercube [0, 1]^d.


  • rank: rank of the neuron
  • norm: norm of the cube (default = 1.0)

Returns the rank of a neuron based on coordinates.


  • coord: coordinate tuple, can be multidimensional.

Resets all parameters and variables of the population to the value they had before the call to compile().


  • attributes: list of attributes (parameter or variable) which should be reinitialized. Default: all attributes.

Saves all information about the population (structure, current value of parameters and variables) into a file.

  • If the extension is ‘.mat’, the data will be saved as a Matlab 7.2 file. Scipy must be installed.
  • If the extension ends with ‘.gz’, the data will be pickled into a binary file and compressed using gzip.
  • Otherwise, the data will be pickled into a simple binary text file using pickle.


  • filename: filename, may contain relative or absolute path.


The ‘.mat’ data will not be loadable by ANNarchy, it is only for external analysis purpose.



Sets the value of neural variables and parameters.


  • values: dictionary of attributes to be updated.
set({ 'tau' : 20.0, 'r'= np.random.rand((8,8)) } )

Returns the array of weighted sums corresponding to the target:

excitatory = pop.sum('exc')

For spiking networks, this is equivalent to accessing the conductances directly:

excitatory = pop.g_exc

If no incoming projection has the given target, the method returns zeros.


  • target: the desired projection target.

Note: it is not possible to distinguish the original population when the same target is used.


Returns iteratively each neuron in the population.

For instance, if you want to iterate over all neurons of a population:

>>> for neur in pop.neurons:
...     neur.r = 0.0

Alternatively, one could also benefit from the __iter__ special command. The following code is equivalent:

>>> for neur in pop:
...     neur.r = 0.0