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]
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;
//genesis
//AddSynapticChannels.g

/***************************		MS Model, Version 12	******************
******************************************************************************/

function addSynChannel (compPath, chanpath, gbar, caBuffer)

  str compPath, chanpath, caBuffer
  float gbar

    //echo "addSynChannel, compPath = "{compPath} "chanpath = "{chanpath} "gbar = "{gbar}

  copy /library/{chanpath} {compPath}/{chanpath}
  addmsg {compPath} {compPath}/{chanpath} VOLTAGE Vm
  
  //if the channel is NOT NMDA, add channel msg from channel to compt.
  // Otherwise, if NMDA, do not add channel msg to compt here, it is added in the addNMDAchannel function below:
  if ({chanpath} != {NMDAname})
    addmsg {compPath}/{chanpath} {compPath} CHANNEL Gk Ek
    //echo "addSynChannel, chanpath = "{chanpath} "Is not an NMDA channel, adding channel msg directly to spine head"
  //else
    //echo "chanpath = " {chanpath} " is an NMDA channel, no direct msg to compt (must be sent to Mg block, then spine head)"
  end

  if ({isa caplas_synchan /library/{chanpath}})

    echo {chanpath} "is a caplas_synchan, sensing calcium from " {compPath}/{caBuffer}

    if ({isa difshell  {compPath}/{caBuffer}})         // dif_shell
        addmsg {compPath}/{caBuffer} {compPath}/{chanpath} CALCIUM C
    elif ({isa Ca_concen {compPath}/{caBuffer}})      // Ca_conc
        addmsg {compPath}/{caBuffer} {compPath}/{chanpath} CALCIUM Ca
    end

  elif ({isa caplas_des_synchan /library/{chanpath}})

    echo {chanpath} "is a caplas_des_synchan, sensing calcium from " {compPath}/{caBuffer}

    if ({isa difshell  {compPath}/{caBuffer}})         // dif_shell
        addmsg {compPath}/{caBuffer} {compPath}/{chanpath} CALCIUM C
    elif ({isa Ca_concen {compPath}/{caBuffer}})      // Ca_conc
        addmsg {compPath}/{caBuffer} {compPath}/{chanpath} CALCIUM Ca
    end
  elif ({isa caplas_tm_synchan /library/{chanpath}})

    echo {chanpath} "is a caplas_tm_synchan, sensing calcium from " {compPath}/{caBuffer}

    if ({isa difshell  {compPath}/{caBuffer}})         // dif_shell
        addmsg {compPath}/{caBuffer} {compPath}/{chanpath} CALCIUM C
    elif ({isa Ca_concen {compPath}/{caBuffer}})      // Ca_conc
        addmsg {compPath}/{caBuffer} {compPath}/{chanpath} CALCIUM Ca
    end
  end

  // Set the new conductance
  float len = {getfield {compPath} len}
  float dia = {getfield {compPath} dia}
  float surf = {len*dia*PI}

  setfield {compPath}/{chanpath} gmax {gbar}
//  setfield {compPath}/{chanName} gmax {surf*gbar}
 
  if ({chanpath} == "AMPA" && {AMPACaper}>0)
	if ({isa difshell {compPath}/{caBuffer}}) 
		//echo spine calcium model is difshell
		addmsg {compPath}/{chanpath} {compPath}/{caBuffer} FINFLUX Ik {AMPACaper}
	end
  end
end
 
function addNMDAchannel(compPath, chanpath,caBuffer, gbar, ghk, nmdacdi)

  str compPath, chanpath
  float gbar
  str caBuffer
  int ghk
  int nmdacdi
//copy the channel into the compartment and set the conductance
  addSynChannel {compPath} {chanpath} {gbar}

//next connect the mgblock
  addmsg {compPath}/{chanpath}/block {compPath} CHANNEL Gk Ek
  addmsg {compPath} {compPath}/{chanpath}/block VOLTAGE Vm

//while the block object always controls the voltage, either the block object or the ghk object controls the calcium. 
//ghk_yesno set in SynParams.g
// adds NMDA to Ca buffer in difshell or concen 
	if (ghk==0)
		if ({isa difshell  {compPath}/{caBuffer}} )         // dif_shell 
	 		addmsg {compPath}/{chanpath}/block {compPath}/{caBuffer} FINFLUX Ik {NMDAperCa}
		elif ({isa Ca_concen {compPath}/{caBuffer}})      // Ca_conc
			addmsg {compPath}/{chanpath}/block {compPath}/{caBuffer} fI_Ca Ik {NMDAperCa}
        end
	elif (ghk==1)
        float new_NMDAperCa = NMDAperCa/2.
        addmsg {compPath} {compPath}/{chanpath}/GHK VOLTAGE Vm
		if ({isa difshell  {compPath}/{caBuffer}})         // dif_shell
	 		addmsg {compPath}/{chanpath}/GHK {compPath}/{caBuffer} FINFLUX Ik {new_NMDAperCa}
			addmsg {compPath}/{caBuffer} {compPath}/{chanpath}/GHK CIN C
		elif ({isa Ca_concen {compPath}/{caBuffer}})      // Ca_conc
			addmsg {compPath}/{chanpath}/GHK {compPath}/{caBuffer} fI_Ca Ik {new_NMDAperCa}   
			addmsg {compPath}/{caBuffer} {compPath}/{chanpath}/GHK CIN Ca
        end
    end

    // If NMDA_CDI is implemented, then the cdi-gate needs calcium from the compartment (and maybe voltage to work correctly)
    if (nmdacdi==1)
        addmsg {compPath} {compPath}/{chanpath}/NMDA_CDI_gate VOLTAGE Vm
		if ({isa difshell  {compPath}/{caBuffer}})         // dif_shell
			addmsg {compPath}/{caBuffer} {compPath}/{chanpath}/NMDA_CDI_gate CONCEN C
		elif ({isa Ca_concen {compPath}/{caBuffer}})      // Ca_conc
			addmsg {compPath}/{caBuffer} {compPath}/{chanpath}/NMDA_CDI_gate CONCEN Ca
        end
    end
    //echo "addNMDAchannel, caBuffer = "{caBuffer}
end