ModelDB is moving. Check out our new site at The corresponding page is

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

 Download zip file 
Help downloading and running models
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.
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;
//PlasStim can do hfs or theta (train of pre-syn stim), no current injection

function PlasStim (PreStim, StimComp, file, pulseFreq, pulses, trainFreq, numtrains )
    str PreStim
    str StimComp, file
    float pulseFreq, trainFreq
    int pulses, numtrains

    float initSim=0.1
    float interpulse, intertrain,PreStimPct
    int pulse, train, anystim

    //**********set the filenames, and 
    //set up presynaptic element for stimulating
    str filenam={file}@"Stim"@{pulseFreq}@"Hz_"@{trainFreq}@"Hz"
    if ({PreStim}==2)
        PreSynStim {precell} 
        if ({spinesYesNo})
            str stimname={StimComp}@"/spine_1/"@{spcomp1}
	    echo {StimComp}@"/spine_1/"@{spcomp1}	
            str stimname={StimComp}
        addmsg {precell}/spikegen  {neuronname}/{stimname}/{NMDAname} SPIKE 
        addmsg {precell}/spikegen  {neuronname}/{stimname}/{AMPAname} SPIKE 
        PreStimPct= {PreStim}
        if ({PreStimPct}>0 && {PreStimPct}<=1)
            PreSynStim {precell} 
            anystim={PreSynSyncRandom {precell} {neuronname} {PreStimPct} {StimComp}}
            if ({anystim}==0)
                echo "ERROR in PlasStim/PreSynSync: no successful connections"
        elif ({PreStimPct}<=0)
            echo "ERROR in PlasStim: PreStim," {PreStim} ", must be string between 0 and 1"

    echo "################ simulating Synchronous Stim, Freqs:" {pulseFreq} {trainFreq} 
    //setfilename {Vmfile} {filenam} 1 {Vmhead}
    //setfilename {Cafile} {filenam} 1 {Cahead}
    //setfilename {Gkfile} {filenam} 1 {Gkhead}
    //setfilename {spinefile} {filenam} 1 {spinehead}

// Determine the interpulse and intertrain intervals
    if ({pulses}>1)
    if ({numtrains}>1)
        intertrain = (1/{trainFreq})-(pulses)*{interpulse}

    create asc_file /output/Tertweight
    setfield /output/Tertweight   flush 1  leave_open 1 append 1 float_format %0.6g
    useclock /output/Tertweight 5e-4
    addmsg /cell/tertdend1_3/spine_1/head/AMPA /output/Tertweight  SAVE synapse[0].weight	
    setfield /output/Tertweight filename /output/"weight_tert.txt"

//step through the simulation
    step {initSim} -time
    if ({pulseYN})
        setfield {precell} Vm 10
        step 1 
        setfield {precell} Vm 0
        step {initSim} -time
    for (train=0; train<numtrains; train=train+1)
        for (pulse=0; pulse<pulses; pulse=pulse+1)
            setfield {precell} Vm 10
            step 1 
            setfield {precell} Vm 0
            step {interpulse} -time
        step {intertrain} -time

    if ({pulseYN})
        step {initSim} -time
        setfield {precell} Vm 10
        step 1 
        setfield {precell} Vm 0
    step {initSim} -time

    fileFLUSH {Vmfile} {Cafile} {Gkfile} {spinefile}
		int nummsg={getmsg {precell}/spikegen -out -count}
		int i
		for (i=0; i<nummsg; i=i+1)
			deletemsg {precell}/spikegen 0 -outgoing 

Loading data, please wait...