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 sys, os
from graphs.my_graph import set_plot

def set_scale_and_annotation(ax,
                             xunit='s', yunit='mV',
                             xscale=None, yscale=None):
    x1, x2 = ax.get_xlim()
    y1, y2 = ax.get_ylim()
    if xscale is None:
        xscale = int((x2-x1)/10)
    if yscale is None:
        yscale = int((y2-y1)/10)
    ax.plot([x1, x1+xscale], [y1, y1],  '-', lw=5, color='gray')
    ax.annotate(str(xscale)+xunit, (x1+1.1*xscale,y1))
    ax.plot([x1,x1], [y1,y1+yscale], '-', lw=5, color='gray')
    ax.annotate(str(yscale)+yunit, (x1,y1+1.1*yscale))
    set_plot(ax, [], xticks=[], yticks=[])
def bars_only(ax, x, y,
              xunit='s', yunit='mV',
              xscale=None, yscale=None, color='k', label=''):
    ax.plot(x, y, '-', color=color, label=label)

    set_scale_and_annotation(ax, xunit=xunit, yunit=yunit,
                             xscale=xscale, yscale=yscale)
    return ax

def bars_only_multiple_traces(ax, X, Y,
                              xunit='s', yunit='mV',
                              xscale=None, yscale=None,
                              color='k', LABELS=None, COLORS=None):

    if LABELS is None:
        LABELS = ['' for i in range(len(X))]
    if COLORS is None:
        COLORS = [color for i in range(len(X))]

    for i in range(len(X)):
        ax.plot(X[i], Y[i], '-', label=LABELS[i], color=COLORS[i])

    set_scale_and_annotation(ax, xunit=xunit, yunit=yunit,
                             xscale=xscale, yscale=yscale)
    return ax

if __name__=='__main__':

    import matplotlib.pylab as plt
    import numpy as np
                              [np.arange(100) for i in range(10)],
                              [np.random.randn(100)*10 for i in range(10)])

Loading data, please wait...