Mesoscopic dynamics from AdEx recurrent networks (Zerlaut et al., JCNS 2017)

 Download zip file 
Help downloading and running models
We present a mean-field model of networks of Adaptive Exponential (AdEx) integrate-and-fire neurons, with conductance-based synaptic interactions. We study a network of regular-spiking (RS) excitatory neurons and fast-spiking (FS) inhibitory neurons. We use a Master Equation formalism, together with a semi-analytic approach to the transfer function of AdEx neurons to describe the average dynamics of the coupled populations. We compare the predictions of this mean-field model to simulated networks of RS-FS cells, first at the level of the spontaneous activity of the network, which is well predicted by the analytical description. Second, we investigate the response of the network to time-varying external input, and show that the mean-field model predicts the response time course of the population. Finally, to model VSDi signals, we consider a one-dimensional ring model made of interconnected RS-FS mean-field units.
1 . Zerlaut Y, Chemla S, Chavane F, Destexhe A (2018) Modeling mesoscopic cortical dynamics using a mean-field model of conductance-based networks of adaptive exponential integrate-and-fire neurons. J Comput Neurosci 44:45-61 [PubMed]
Model Information (Click on a link to find other models with that property)
Model Type: Realistic Network;
Brain Region(s)/Organism:
Cell Type(s): Abstract integrate-and-fire adaptive exponential (AdEx) neuron;
Gap Junctions:
Simulation Environment: Brian 2; Python;
Model Concept(s): Vision;
import numpy as np
from matplotlib import cm

def twoD_plot(ax, x, y, z, alpha=1., cmap=cm.viridis, interpolation='none',):
    surface plots for x, y and z 1 dimensional data
    x, y = np.array(x), np.array(y)
    Z = np.ones((len(np.unique(y)), len(np.unique(x))))*np.nan
    for i, yy in enumerate(np.unique(y)):
        cond1 = y==yy
        for j, xx in enumerate(np.unique(x[cond1])):
            # Z.append(z[cond1][x[cond1]==xx])
            Z[i,j] = z[cond1][x[cond1]==xx]
    z1 = np.array(Z).reshape(len(np.unique(y)), len(np.unique(x)))
    z1 = Z
    return ax.imshow(z1, interpolation=interpolation,
                     extent = (x.min(), x.max(), y.min(), y.max()),
                     alpha=alpha, cmap=cmap, origin='lower', aspect='auto')

if __name__=='__main__':
    from my_graph import *
    x, y = np.meshgrid(np.arange(10), np.arange(20))
    z = x*y
    x, y, z = np.array(x).flatten(), np.array(y).flatten(), np.array(z).flatten()
    index = np.arange(len(x))
    x, y, z = x[index], y[index], z[index]
    # x, y, z = x[z>20], y[z>20], z[z>20]
    ax = twoD_plot(plt.gca(), x[x<y], y[x<y], z[x<y]*0.+1, cmap=cm.Greys)
    ax = twoD_plot(plt.gca(), x, y, z, interpolation='bilinear')

Loading data, please wait...