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]
Citations  Citation Browser
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;

/***************************		MS Model, Version 12	*********************
This is the top level model file, to be called by MSsim.g

	Avrama Blackwell
	Rebekah Evans

include MScell/MScell.g                 //MScell without synapses or spines
if ({exists {getglobal EkAMPA}})
    include MScell/SynParamsCtx.g               //parameters for synaptic channel
include MScell/channels/synaptic_channel.g // function to make non-nmda synaptic channels in library
include MScell/channels/nmda_channel.g   //function to make nmda channel, either GHK or not, in library
include MScell/AddSynapticChannels.g	// contains functions to add synaptic channels to compartments
include MScell/AddCaSpines.g		//includes calcium channels, creates difshells in spine
include MScell/spines.g           //creates spines, puts channels & calcium in spines

function make_MS_cell_SynSpine (cellname,pfile,spinesYN, DA)
    str cellname,pfile
    int spinesYN

    str CompName, DA

    //******** make the cell without spines or synapses
    make_MS_cell {cellname} {pfile} {DA}

	//************* create synaptic channels and spine proto in library *
    pushe /library

  	make_synaptic_channel  {AMPAname} {AMPAtau1} {AMPAtau2} {AMPAgmax} {EkAMPA} {AMPAdes} {AMPAdestau} 
  	make_NMDA_channel   {NMDAname} {EkNMDA} {Kmg} {NMDAtau2} {NMDAgmax} {ghk_yesno} {NMDAdes} {NMDAdestau} {nmdacdiyesno}
	make_synaptic_channel  {GABAname} {GABAtau1} {GABAtau2} {GABAgmax} {EkGABA} 0 0

    int neckslabs={make_spineProto}

    pope {cellname}

   //********************* add spines (with synapses) or just synapses
    int totspines=0

    if (spinesYN==1)
        // NMDA and AMPA channels are already added in the spine prototype
        //Also, calcium is already implemented in the spines
        totspines = {add_spines_evenly  {cellname} spine  {spineStart} {spineEnd} {spineDensity} {neckslabs} {spineCommonParent}}
            foreach CompName ({el {cellname}/#[TYPE={compartment}]}) 
                addSynChannel  {CompName} {GABAname} {GABAgmax}	"dummyshell"
    else  //if no spines, add all synaptic channels to dendrite, add dendritic pool of calcium for NMDA

        //*******************foreach compartment that WOULD have spines, compensate RM and CM accordingly
        // Cm_new = Cm_old * (compartment_area + spine_area)/comparment_area
        // Rm_new = Rm_old/(compartment_area + spine_area)/compartment_area
       /* str compt
        foreach compt ({el {cellname}/#[TYPE=compartment]})
        	 if (!{{compt}=={{cellname}@"/axIS"} || {compt}=={{cellname}@"/ax"}}) 
                float dia={getfield {compt} dia}
                float position={getfield {compt} position}
                float parentPathlen={getfield {compt} pathlen}
                float len={getfield {compt} len}
                float surfaceArea ={{PI}*{dia}*{len}}
                echo {compt} SurfaceArea= {surfaceArea}
                float singleSpineSurf = {{{dia_head}*{len_head}*{PI}} + {{dia_neck}*{len_neck}*{PI}} }
                echo {compt} singleSpineSurfaceArea= {singleSpineSurf}
                float Cm_old = {getfield {compt} Cm}
                float Rm_old = {getfield {compt} Rm}
                if ({position>={spineStart}} && {position<{spineEnd}} ) //it's a compartment that would have spines
                    int numspines = {{spineDensity} * {len} * 1e6}
                  // numspines = 1
                    echo numspines= {numspines}
                    float totalSpineSurf = {{singleSpineSurf}*{numspines}}
                    echo {compt} TotalSpineSurfaceArea= {totalSpineSurf}
                    setfield {compt} \
                        Cm  {1.0*{Cm_old}*{{surfaceArea}+{totalSpineSurf}}/{surfaceArea}} \
                        Rm  {{Rm_old}/{{{surfaceArea}+{totalSpineSurf}}/{surfaceArea}}}
                    echo {compt} oldRm= {Rm_old} NewRm= {getfield {compt} Rm}
                    echo {compt} oldCm= {Cm_old} NewCm= {getfield {compt} Cm}

                   // float gKCaL12_old = {getfield {compt}"/CaL12_channelGHK" Gk}
                    //float gKCaL13_old = {getfield {compt}"/CaL13_channelGHK" Gk}
                    //float gKCaR_old = {getfield {compt}"/CaR_channelGHK" Gk}
                   // float gKCaT_old = {getfield {compt}"/CaT_channelGHK" Gk}
                   // setfield {{compt}@"/CaL12_channelGHK" Gk {gKCaL12_old*surfaceArea+

        if (synYesNo==1)
            if ({calciumtype}==1)
                add_CaConcen {NMDApool} 0 500e-6 {cellname}

            foreach CompName ({el {cellname}/#[TYPE={compartment}]})
                addNMDAchannel {CompName} {NMDAname} {NMDApool} {NMDAgmax} {ghk_yesno} {nmdacdiyesno}
                addSynChannel  {CompName} {AMPAname} {AMPAgmax} {NMDApool} 
                addSynChannel  {CompName} {GABAname} {GABAgmax}	"dummyshell"
    return totspines