This repository contains a detailed mathematical description and a reference implementation of the model of a cortical microcircuit proposed by Potjans & Diesmann (2014, The cell-type specific cortical microcircuit: relating structure and activity in a full-scale spiking network model. Cerebral Cortex, 24(3), 785-806). The model describes the neuronal circuitry under one square millimeter of cortical surface. It comprises four cortical layers (L2/3, L4, L5, L6), each represented by a randomly connected network of excitatory and inhibitory point neurons. The network connectivity is derived from anatomical and electrophysiological data. Connection probabilities between neurons in the network are highly specific and depend on the cell type (excitatory, inhibitory) and on the locations (cortical layers) of the pre- and postsynaptic neurons. In contrast to this high specificity in the connectivity, all neurons in the network are identical and share the same dynamics and parameters, irrespective of their type and location. Similarly, all synapses are described by an identical dynamics, and differ only in the synaptic weight and spike-transmission latencies. Synaptic weights and spike transmission latencies are randomly drawn from distributions which depend only on the type of the presynaptic neuron (excitatory or inhibitory), but are otherwise identical for all neurons and connections (with one exception). In addition to inputs from the local network, neurons receive external inputs representing thalamic afferents and cortico-cortical inputs from more distant cortical regions.
The original purpose of this model was to understand the relationship between the connectivity and the spiking activity within local cortical circuits. Specifically, the model demonstrates that the observed cell-type and layer specificity of in-vivo firing rates is largely explained by the specificity in the number of connections between cortical subpopulations, and doesn't require a specificity in single neuron or synapse dynamics.
![]() |
![]() |
![]() |
Sketch of the cortical microcircuit model (left), spiking activity (middle) and distributions of time averaged single-neuron firing rates across neurons in each subpopulation (right). Adapted from (van Albada et al., 2018)
In recent years, the model became an established Computational Neuroscience benchmark for various soft- and hardware architectures (van Albada et al., 2018; Jordan et al., 2018; Rhodes et al., 2020; Dasbach et al., 2021; Albers et al., 2022; Kurth et al., 2022; Heittmann et al., 2022; Pronold et al., 2022; Pronold et al., 2022; Golosio et al., 2023; Kauth et al., 2023; Schmidt et al., 2024; Senk et al., 2025).
A community review (Plesser et al., 2025) prepared on the occassion of the 10th anniversary of the original publication of the model provides an historical account of the impact of the model.
A detailed mathematical, implementation-agnostic description of the model and its parameters
A PyNEST implementation in the form of a Python package
List of studies citing and/or using the microcircuit model
docs |
documentation |
docs/model_description |
model description (implementation agnostic) |
docs/benchmarking |
performance benchmarking |
docs/publications |
publications citing/using the microcircuit model |
PyNEST |
PyNEST implementation (python package) |
PyNEST/src/microcircuit |
source code |
PyNEST/examples |
examples illustrating usage of the python package |
PyNEST/reference_data |
reference spike data (generation and verification) |
PyNEST/tests |
unit tests |
figures |
overview figures |
We welcome contributions to the documentation and the code. For bug reports, feature requests, documentation improvements, or other issues, please create a GitHub issue.
The material in this repository is subject to different licenses:
-
All material outside the
PyNESTfolder is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. For details, see here. -
The material inside the
PyNESTfolder is licensed under the GNU General Public License v2.0 or later. For details, see here.


