pynest microcircuit example¶
Example file to run the microcircuit.
Hendrik Rothe, Hannah Bos, Sacha van Albada; May 2016
The microcirucit model is described Potjans and Diesmann 1. This example uses the function GetNodes, which is deprecated. A deprecation warning is therefore issued. For details about deprecated functions, see documentation.
To run the microcircuit on a local machine, adjust the variables
N_scaling
and K_scaling
in network_params.py to 0.1
. N_scaling
adjusts the number of neurons and K_scaling
the number
of connections to be simulated. The full network can be run by adjusting
these values to 1. If this is done, the option to print the time
progress should be set to False in the file sim_params.py
. For
running, use python example.py
. The output will be saved in the
directory data
.
The code can be parallelized using OpenMP and MPI, if NEST has been
built with these applications (Parallel computing with
NEST). The number
of threads (per MPI process) can be chosen by adjusting
local_num_threads
in sim_params.py
. The number of MPI process
can be set by choosing a reasonable value for num_mpi_prc
and then
running the script with the command mpirun -n num_mpi_prc
python
example.py
.
The default version of the simulation uses Poissonian input, which is
defined in the file network_params.py
to excite neuronal populations
of the microcircuit. If no Poissonian input is provided, DC input is
calculated which should approximately compensate the Poissonian input.
It is also possible to add thalamic stimulation to the microcircuit or
drive it with constant DC input. This can be defined in the file
stimulus_params.py
.
References¶
- 1
Potjans TC. and Diesmann M. 2014. The cell-type specific cortical microcircuit: relating structure and activity in a full-scale spiking network model. Cerebral Cortex. 24(3):785–806. DOI: 10.1093/cercor/bhs358.
import time
import numpy as np
import network
from network_params import net_dict
from sim_params import sim_dict
from stimulus_params import stim_dict
# Initialize the network and pass parameters to it.
tic = time.time()
net = network.Network(sim_dict, net_dict, stim_dict)
toc = time.time() - tic
print("Time to initialize the network: %.2f s" % toc)
# Connect all nodes.
tic = time.time()
net.setup()
toc = time.time() - tic
print("Time to create the connections: %.2f s" % toc)
# Simulate.
tic = time.time()
net.simulate()
toc = time.time() - tic
print("Time to simulate: %.2f s" % toc)
# Plot a raster plot of the spikes of the simulated neurons and the average
# spike rate of all populations. For visual purposes only spikes 100 ms
# before and 100 ms after the thalamic stimulus time are plotted here by
# default. The computation of spike rates discards the first 500 ms of
# the simulation to exclude initialization artifacts.
raster_plot_time_idx = np.array(
[stim_dict['th_start'] - 100.0, stim_dict['th_start'] + 100.0]
)
fire_rate_time_idx = np.array([500.0, sim_dict['t_sim']])
net.evaluate(raster_plot_time_idx, fire_rate_time_idx)