Synchronicity of fast-spiking interneurons balances medium-spiny neurons (Damodaran et al. 2014)

 Download zip file 
Help downloading and running models
Accession:156260
This study investigates the role of feedforward and feedback inhibition in maintaining the balance between D1 and D2 MSNs of the striatum. The synchronized firing of FSIs are found to be critical in this mechanism and specifically the gap junction connections between FSIs.
Reference:
1 . Damodaran S, Evans RC, Blackwell KT (2014) Synchronized firing of fast-spiking interneurons is critical to maintain balanced firing between direct and indirect pathway neurons of the striatum. J Neurophysiol 111:836-48 [PubMed]
Citations  Citation Browser
Model Information (Click on a link to find other models with that property)
Model Type: Realistic Network;
Brain Region(s)/Organism:
Cell Type(s): Neostriatum medium spiny direct pathway GABA cell; Neostriatum medium spiny indirect pathway GABA cell; Neostriatum fast spiking interneuron;
Channel(s):
Gap Junctions: Gap junctions;
Receptor(s): NMDA; Gaba;
Gene(s):
Transmitter(s):
Simulation Environment: GENESIS;
Model Concept(s): Detailed Neuronal Models; Parkinson's;
Implementer(s): Blackwell, Avrama [avrama at gmu.edu]; Damodaran, Sriraman [dsriraman at gmail.com];
Search NeuronDB for information about:  Neostriatum medium spiny direct pathway GABA cell; Neostriatum medium spiny indirect pathway GABA cell; NMDA; Gaba;
/
striatalnetwork
FScell
channels
a_channel.g *
ampa_channel.g *
ampa_channel.g~ *
gaba_channel.g *
gaba_channel.g~
k13_channel.g *
k3132_channel.g *
na_channel.g *
synaptic_channel.g *
                            
/* Na channel
 *      fills tables with values for alpha and beta and then
 *      uses tweakalpha to alter the values to A and B
 *      values for alpha and beta are taken from:
 *      J. Neurophysiology 82: 2476-2389, 1999 
 *      on page 2478
 * 
 *      the functions below convert to physiological units to do the 
 *      calulations and convert back to SI units for the output
 */

/* alpha for the type X gate (activation) */

function NaChanAlphaX(voltage)

    float voltage = {voltage} * 1e3 /* convert to mV */

    float num = {3020 - {40 * {voltage}}}
    float denom = {{exp {{-75.5 + {voltage}} / {-13.5}}} - 1}

    /* convert sec to msec */
    float act = {{num} / {denom}} * 1e3
    
    return act
end

/* beta for the type X gate (activation) */
function NaChanBetaX(voltage) 

    float voltage = {voltage} * 1e3 /* convert to mV */

    //echo NaBetaXVoltage: {voltage}
    float num = 1.2262
    float denom = {exp {{voltage} / 42.248}}

    /* convert sec to msec */
    float act = {{num} / {denom}} * 1e3

    return act
end

/* alpha for the type Y gate (inactivation) */
function NaChanAlphaY(voltage)

    float voltage = voltage * 1e3 /* convert to mV */

    float num = 0.0035 
    float denom = {exp {{voltage} / 24.186}}

    /* convert sec to msec */
    float act = {{num} / {denom}} * 1e3

    return act
end

function NaChanBetaY(voltage) 

    float voltage = voltage * 1e3

    float num = {-{0.8712 + {0.017 * {voltage}}}}
    float denom = {{exp {{51.25 + voltage} / -5.2}} - 1}

    /* convert sec to msec */
    float act = {{num} / {denom}} * 1e3

    return act
end

function make_Na_channel 

    float Erev = 0.045  /* reversal potential of sodium */

    str path = "Na_channel"  

    float xmin  = -0.1   /* minimum voltage we will see in the simulation */
    float xmax  = 0.05   /* maximum voltage we will see in the simulation */
    float step  = 0.005  /* use a 5mV step size */
    int   xdivs = 30     /* the number of divisions between -0.1 and 0.05 */
    int   c     = 0
    float y


    create tabchannel {path}

    /* make the table for the activation with a range of -100mV - +50mV
     * with an entry for ever 5mV
     */
    call {path} TABCREATE X {xdivs} {xmin} {xmax}
    call {path} TABCREATE Y {xdivs} {xmin} {xmax}

    /* set the tau and m_inf for the activation and inactivation */
    for(c = 0; c < {xdivs} + 1; c = c + 1)
        setfield {path} X_A->table[{c}] {NaChanAlphaX {{c * {step}} + xmin}}
        setfield {path} X_B->table[{c}] {NaChanBetaX  {{c * {step}} + xmin}}
        setfield {path} Y_A->table[{c}] {NaChanAlphaY {{c * {step}} + xmin}}
        setfield {path} Y_B->table[{c}] {NaChanBetaY  {{c * {step}} + xmin}}
    end

/* for testing */
//for(c = 0; c < 30; c = c + 1)  
//        showfield {path} X_A->table[{c}] 
//        showfield {path} X_B->table[{c}] 
//        showfield {path} Y_A->table[{c}] 
//        showfield {path} Y_B->table[{c}] 
//    end

//for(c = 0; c < 30; c = c + 1)  
//        y = {call Na_channel CALC_ALPHA X {c}}
//        return y
//    end

    setfield {path} Ek {Erev} Xpower 3 Ypower 1

    /* fill the tables with the values of A and B
     * calculated from alpha and beta
     */

    tweakalpha {path} X
    tweakalpha {path} Y

    call {path} TABFILL X 3000 0 
    call {path} TABFILL Y 3000 0

    setfield {path} X_A->calc_mode 0 X_B->calc_mode 0
    setfield {path} Y_A->calc_mode 0 Y_B->calc_mode 0
end