Striatal Spiny Projection Neuron, inhibition enhances spatial specificity (Dorman et al 2018)

 Download zip file 
Help downloading and running models
Accession:245411
We use a computational model of a striatal spiny projection neuron to investigate dendritic spine calcium dynamics in response to spatiotemporal patterns of synaptic inputs. We show that spine calcium elevation is stimulus-specific, with supralinear calcium elevation in cooperatively stimulated spines. Intermediate calcium elevation occurs in neighboring non-stimulated dendritic spines, predicting heterosynaptic effects. Inhibitory synaptic inputs enhance the difference between peak calcium in stimulated spines, and peak calcium in non-stimulated spines, thereby enhancing stimulus specificity.
Reference:
1 . Dorman DB, Jedrzejewska-Szmek J, Blackwell KT (2018) Inhibition enhances spatially-specific calcium encoding of synaptic input patterns in a biologically constrained model. Elife, Kennedy, Mary B, ed. [PubMed]
Model Information (Click on a link to find other models with that property)
Model Type: Neuron or other electrically excitable cell;
Brain Region(s)/Organism: Basal ganglia;
Cell Type(s): Neostriatum spiny neuron;
Channel(s): Ca pump; Kir; I A; I A, slow; I CAN; I K,Ca; I Krp; I Na,t; I L high threshold; I R; I T low threshold; IK Bkca; IK Skca; Na/Ca exchanger;
Gap Junctions:
Receptor(s): AMPA; NMDA; GabaA;
Gene(s): Cav3.2 CACNA1H; Cav3.3 CACNA1I; Cav1.2 CACNA1C; Cav1.3 CACNA1D; Cav2.2 CACNA1B; Kv4.2 KCND2; Kir2.1 KCNJ2; Kv2.1 KCNB1;
Transmitter(s): Gaba; Glutamate;
Simulation Environment: GENESIS;
Model Concept(s): Calcium dynamics; Detailed Neuronal Models; Synaptic Integration; Synaptic Plasticity;
Implementer(s): Dorman, Daniel B ;
Search NeuronDB for information about:  GabaA; AMPA; NMDA; I Na,t; I L high threshold; I T low threshold; I A; I K,Ca; I CAN; I A, slow; Na/Ca exchanger; I Krp; I R; Ca pump; Kir; IK Bkca; IK Skca; Gaba; Glutamate;
//genesis
//SpikeMakerFunctions.g

//Note: the *ALL* functions assume 4 primdends, 2 secdends / primdend, and 12 tert sections
//tertstart and tertsegstart = 2 are used to "reserve" some dendrites for synchronous stim, for STDP

function makeSpikeSet(morphName,numstart,numend,ranspikeNum,Hz,cell)
    //0 goes to GABA, 1, and optionally 2 & 3 go to GLU
    str morphName,cell
    int numstart,numend,ranspikeNum
    float Hz

    str path
    int segnum
    for (segnum=numstart;segnum<numend;segnum=segnum+1)
        foreach path({el {cell}/{morphName}{segnum}})
            if (!{exists {path}/randomspike{ranspikeNum}})
                create randomspike {path}/randomspike{ranspikeNum}
            end
            setfield {path}/randomspike{ranspikeNum} min_amp 1.0 max_amp 1.0 rate {Hz} reset 1 reset_value 0
        end
    end
end

function makeALLspikes (rate, ranSpikeNum,cell, tertstart,tertsegstart)
    float rate
    int ranSpikeNum, tertstart, tertsegstart
    str cell

    echo "makeALL"{ranSpikeNum} {rate} "Hz" {tertstart} {tertsegstart}
    int j

    makeSpikeSet primdend 1 5 {ranSpikeNum} {rate} {cell}
    makeSpikeSet secdend 11 13 {ranSpikeNum} {rate} {cell}
    makeSpikeSet secdend 21 23 {ranSpikeNum} {rate} {cell}
    makeSpikeSet secdend 31 33 {ranSpikeNum} {rate} {cell}
    makeSpikeSet secdend 41 43 {ranSpikeNum} {rate} {cell}
	for (j=tertstart;j<17;j=j+1)
        makeSpikeSet tertdend{j}_ {tertsegstart} 12 {ranSpikeNum} {rate} {cell}
    end
    reset
end

function ConnectOneInput(pathspike, path) 
	str pathspike, path
	int msgnum
	addmsg {pathspike} {path} SPIKE
    msgnum = {getfield {path} nsynapses} - 1
   	 setfield {path} synapse[{msgnum}].weight 1 synapse[{msgnum}].delay 0
end

function ConnectInputSet(morphName,numstart,numend,spikeNum, cell)
    str morphName, cell
    int numstart,numend
    int spikeNum

    str path
    int i

    if ({spinesYesNo})
        str glupath="/spine_1/"@{spcomp1}@"/"
    else
        str glupath="/"
    end

    for (i=numstart;i<numend;i=i+1)
        foreach path({el {cell}/{morphName}{i}})
            if ({spikeNum} == 0)
                ConnectOneInput {path}/randomspike0 {path}/GABA
            else
                ConnectOneInput {path}/randomspike{spikeNum} {path}{glupath}AMPA
                ConnectOneInput {path}/randomspike{spikeNum} {path}{glupath}{subunit}
            end
         end
    end
end

function ConnectALLInput (ranSpikeNum, cell, tertstart,tertsegstart)
    int ranSpikeNum
    str cell
    int j, tertstart, tertsegstart

    echo "connect input" {ranSpikeNum}
    ConnectInputSet primdend 1 5 {ranSpikeNum} {cell} 
    ConnectInputSet secdend 11 13 {ranSpikeNum} {cell} 
    ConnectInputSet secdend 21 23 {ranSpikeNum} {cell} 
    ConnectInputSet secdend 31 33 {ranSpikeNum} {cell} 
    ConnectInputSet secdend 41 43 {ranSpikeNum} {cell} 
	for (j=tertstart;j<17;j=j+1)
        ConnectInputSet tertdend{j}_ {tertsegstart} 12 {ranSpikeNum} {cell} 
    end
end

function DisconnectInputSet(morphName,numstart,numend,ranSpikeNum, cell)
    str morphName,cell
    int numstart,numend, ranSpikeNum
    str path
    int segnum

    if ({spinesYesNo})
        str glupath="/spine_1/"@{spcomp1}@"/"
    else
        str glupath="/"
    end
    for (segnum=numstart;segnum<numend;segnum=segnum+1)
        foreach path({el {cell}/{morphName}{segnum}})
            if ({ranSpikeNum}==0)
                deletemsg {path}/GABA 1 -incoming
            else
                deletemsg {path}{glupath}AMPA 1 -incoming
                deletemsg {path}{glupath}{subunit} 1 -incoming
            end
        end
    end
end

function DisconnectALLinput (ranSpikeNum,cell, tertstart,tertsegstart)
    str cell
    int ranSpikeNum
    int j, tertstart, tertsegstart

    echo "disconnect input" {ranSpikeNum} {cell}
    DisconnectInputSet primdend 1 5 {ranSpikeNum} {cell}
    DisconnectInputSet secdend 11 13 {ranSpikeNum} {cell}
    DisconnectInputSet secdend 21 23 {ranSpikeNum} {cell}
    DisconnectInputSet secdend 31 33 {ranSpikeNum} {cell}
    DisconnectInputSet secdend 41 43 {ranSpikeNum} {cell}
	for (j=tertstart;j<17;j=j+1)
        DisconnectInputSet tertdend{j}_ {tertsegstart} 12 {ranSpikeNum} {cell}
    end
end

function deleteSpikeSet(morphName,numstart,numend,ranspikeNum, cell)
    str morphName,cell
    int numstart,numend
    int ranspikeNum
    str path
    int segnum

    for (segnum=numstart;segnum<numend;segnum=segnum+1)
        foreach path({el {cell}/{morphName}{segnum}})
            delete {path}/randomspike{ranspikeNum}
        end
    end
end

function deleteALLspikes (ranSpikeNum, cell, tertstart,tertsegstart)
    int ranSpikeNum
    str cell
    int j, tertstart, tertsegstart

    deleteSpikeSet primdend 1 5 {ranSpikeNum} {cell}
    deleteSpikeSet secdend 11 13 {ranSpikeNum} {cell}
    deleteSpikeSet secdend 21 23 {ranSpikeNum} {cell}
    deleteSpikeSet secdend 31 33 {ranSpikeNum} {cell}
    deleteSpikeSet secdend 41 43 {ranSpikeNum} {cell}
	for (j=tertstart;j<17;j=j+1)
        deleteSpikeSet tertdend{j}_ {tertsegstart} 12 {ranSpikeNum} {cell}
    end
    reset
end

Loading data, please wait...