Calcium influx during striatal upstates (Evans et al. 2013)

 Download zip file 
Help downloading and running models
Accession:150912
"... To investigate the mechanisms that underlie the relationship between calcium and AP timing, we have developed a realistic biophysical model of a medium spiny neuron (MSN). ... Using this model, we found that either the slow inactivation of dendritic sodium channels (NaSI) or the calcium inactivation of voltage-gated calcium channels (CDI) can cause high calcium corresponding to early APs and lower calcium corresponding to later APs. We found that only CDI can account for the experimental observation that sensitivity to AP timing is dependent on NMDA receptors. Additional simulations demonstrated a mechanism by which MSNs can dynamically modulate their sensitivity to AP timing and show that sensitivity to specifically timed pre- and postsynaptic pairings (as in spike timing-dependent plasticity protocols) is altered by the timing of the pairing within the upstate. …"
Reference:
1 . Evans RC, Maniar YM, Blackwell KT (2013) Dynamic modulation of spike timing-dependent calcium influx during corticostriatal upstates. J Neurophysiol 110:1631-45 [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: Striatum;
Cell Type(s): Neostriatum medium spiny direct pathway GABA cell;
Channel(s): I Na,t; I L high threshold; I N; I A; I K; I K,Ca; I A, slow; I Krp; I R;
Gap Junctions:
Receptor(s): AMPA; NMDA; Gaba;
Gene(s): Cav1.3 CACNA1D; Cav1.2 CACNA1C; Cav2.2 CACNA1B;
Transmitter(s):
Simulation Environment: GENESIS;
Model Concept(s): Oscillations; STDP; Calcium dynamics;
Implementer(s): Evans, Rebekah [Rebekah.Evans at nih.gov];
Search NeuronDB for information about:  Neostriatum medium spiny direct pathway GABA cell; AMPA; NMDA; Gaba; I Na,t; I L high threshold; I N; I A; I K; I K,Ca; I A, slow; I Krp; I R;
//spines.g for including spines in the MSN model.

//****************make the spines************************************

//for calcium and buffer diffusion messages between spine neck and dendrite.  
//this is a very unclean way to do it because these variables are defined elsewhere.
str uppershellname = {CalciumName} @ 1
str midshellname = {CalciumName} @ 2
str bottomshellname = {CalciumName} @ 3
str outermostShellName = {CalciumName} @ 1

function make_spines

float surf_neck, vol_neck, len_neck, dia_neck,dia_head,len_head,dia_head, surf_head,vol_head, shell_thick, dia_shell, shell_head, Ca_tau, kB, kE,r,Ca_base  

// parameters:
       // for spine neck:
       len_neck=1e-6                               //0.16-2.13
       dia_neck=0.1e-6                             //(0.038-0.46)e-6
       // for spine head:
       dia_head=0.5e-6                              //adopt common size, no exact data are available now
       len_head=0.5e-6
       surf_head=dia_head*len_head*{PI}
       surf_neck=len_neck*dia_neck*{PI}
      

 // for calcium constants using concen objects:
    if ({shellMode}==1)
		kE =86.0                                   // Cater and Sabatini, 2004
        Ca_tau = 25.0e-3                            
        r= (1+kE)/Ca_tau
        Ca_base = 50e-6                            // baseline: 50 nM
     end

//  vol_neck={len_neck*dia_neck*dia_neck*PI/4.0}
  if (!{exists spine})
     create compartment spine
  end

 addfield  spine position
 setfield  spine  \
           Cm     {{CM}*surf_neck} \
           Ra    { 4.0*len_neck*{RA}/(dia_neck*dia_neck*{PI})}  \
           Em     {ELEAK}     \
           initVm {EREST_ACT} \
           Rm     {{RM}/surf_neck} \
           inject  0.0         \
           dia     {dia_neck}       \
           len     {len_neck}    \
           position 0.0   




 create compartment spine/head
 addfield spine/head position
 setfield spine/head          \
         Cm     {{CM}*surf_head} \
         Ra    { 4.0*{RA}*len_head/(dia_head*dia_head*{PI})}  \
         Em     {ELEAK}           \
         initVm {EREST_ACT}       \
         Rm     {{RM}/surf_head} \
         inject  0.0              \
         dia     {dia_head}         \
         len     {len_head}       \
         position 0.0
/*combine neck-head of CA1 CA1_spine */
 addmsg spine/head spine RAXIAL Ra Vm 
 addmsg spine spine/head AXIAL Vm


// make calcium buffers 
	
    if ({shellMode}==0)
		//must be in this order, head made first then neck.
		add_difshell_spine {CalciumName} "head" {dia_neck} {len_neck} //function in CaDifshellSpine.g
		add_difshell_spine {CalciumName} "neck" {dia_head} {len_head}
    elif ({shellMode}==1)  // Sabatini's model.       Sabatini, 2001,2004
        str buffer1 = "spineCa"                         // calcium pool for the other calcium channels
		str buffer2 = "spineCaL"                        // calcium pool for L-type Ca2+ channels
		str buffer3 = "buffer_NMDA"                     // only to record NMDA-dependent [Ca]
		create Ca_concen  spine/head/{buffer1}  // to create simplified Ca_pool here! 
			if ({CaDyeFlag}==2)
				kB = 220                     // Fluo-4, taken from Yasuda,et,al. 2004,STEK
				Ca_tau = (1+kE+kB)/r         // re-calculate time constant because of application of the new calcium-dye
			elif({CaDyeFlag}==3)
				kB = 70                      // Fluo-5F
				Ca_tau = (1+kE+kB)/r
			end
			
         float  shell_dia= dia_head - shell_thick*2
         float  shell_vol= {PI}*(dia_head*dia_head/4-shell_dia*shell_dia/4)*len_head
          setfield spine/head/{buffer1} \
                                 B          {1.0/(2.0*96494*shell_vol*(1+kE+kB))} \
                                 tau        {Ca_tau}                         \
                                 Ca_base    {Ca_base}   \
                                 thick      {shell_thick} 

        copy   spine/head/{buffer1} spine/head/{buffer2}
        copy   spine/head/{buffer1} spine/head/{buffer3}
        setfield   spine/head/{buffer2}  Ca_base  50e-6
	end 
 
 
	create neutral spine/presyn_ext
	create neutral spine/presyn_inh
 
pushe spine/head

/**************************************************************************************
******************to add NMDA/AMPA channels*******************************************
**************************************************************************************/

addSynChannel . {AMPAname} {AMPAgmax}
addNMDAchannel . {NMDAname} {uppershellname} {NMDAgmax} 0 


 	setfield ../presyn_ext z 0
	addmsg   ../presyn_ext  ./{NMDAname} ACTIVATION z
	addmsg   ../presyn_ext  ./{AMPAname} ACTIVATION z
 
 
/**********************************end**********************************************

/// now to add GABA
 setfield ../presyn_inh z 0

 if({GABA2Spine}==1)
       addGABAchannel .  GABA_1  {GABAcond}         // added to spine head 
       addmsg   ../presyn_inh   ./GABA_1 ACTIVATION z 
       addGABAchannel .  GABA_2  {GABAcond}         // added to spine head 
       addmsg   ../presyn_inh   ./GABA_2 ACTIVATION z
 elif({GABA2Spine}==2)
       addGABAchannel  .. GABA_1      {GABAcond}         // added to spine neck
       addmsg   ../presyn_inh   ../GABA_1      ACTIVATION z
       addGABAchannel  .. GABA_2      {GABAcond}         // added to spine neck
       addmsg   ../presyn_inh   ../GABA_2      ACTIVATION z
 end

*/

if({addCa2Spine}==1)
/*************************************************************************************
****************** to add Calcium Channels********************************************
******************* L-type, R-type, and T-type
**************************************************************************************/
//  addCaChannel {obj} {compt} {Gchan} {CalciumBuffer}
/** old numbers, now use those in globals directly.
float Pbar_CaL12, Pbar_CaL13, Pbar_CaR, Pbar_CaT

 Pbar_CaL12       =      3.35e-7
 Pbar_CaL13       =      4.25e-7
 Pbar_CaR         =     13e-7
 Pbar_CaT         =     0.235e-7
**/
if ({shellMode}==0)
	addCaChannelspines CaL12_channel      .  {gCaL12}    {midshellname}         // HVA CaL
	addCaChannelspines CaL13_channel      .  {gCaL13}    {uppershellname}      // LVA CaL
	addCaChannelspines CaR_channel        .  {gCaR}      {midshellname}
	addCaChannelspines CaT_channel        .  {gCaT}      {midshellname}
elif ({shellmode}==1)
	addCaChannelspines CaL12_channel      .  {gCaL12}    {buffer2}         // HVA CaL
	addCaChannelspines CaL13_channel      .  {gCaL13}    {buffer2}      // LVA CaL
	addCaChannelspines CaR_channel        .  {gCaR}      {buffer1}
	addCaChannelspines CaT_channel        .  {gCaT}      {buffer1}
end

pope

end
end
//******************done making spines*********************************

//*****************begin function to add spines*********************************

function add_spines_evenly(cellpath,spine,a,b,density)
/* "spine"   :   spine prototype
** "density" :   1/um,  spine density; The number of spines in one compartment = density * compartment length. 
*/
 str cellpath,compt,spine,thespine,path
 int number,i
 float dia,len,surf_head,k,dia_dend,len_dend,surf_dend,a,b,density,position

 if(!{exists /library/{spine}})
   echo The spine protomodel has not been made! 
    return
 end

foreach compt ({el {cellpath}/##[TYPE=compartment]}) 
 if (!{{compt}=={{cellpath}@"/axIS"} || {compt}=={{cellpath}@"/ax"}}) 
    dia={getfield {compt} dia}
    position={getfield {compt} position}
     len={getfield {compt} len}
    if ({{getpath {compt} -tail}=="soma"})
              len = dia
    end
  //if the compartment is not a spine ,
  // and its position is between [a,b]
   if ({position>=a} && {position<b} ) 
     number = density * len * 1e6

   // make sure that one compartment has at least one spine
    if (number == 0)
       number = number + 1
    end

  for(i=1;i<=number;i=i+1)
       thespine = "spine"@"_"@{i}
       copy /library/{spine} {compt}/{thespine}
       addmsg {compt}/{thespine} {compt} RAXIAL Ra Vm
       addmsg {compt} {compt}/{thespine} AXIAL Vm
    if ({shellMode}==0)
	//send calcium diffusion message from bottom shell of spine neck to outer shell of compartment
	addmsg {compt}/{thespine}/{bottomshellname} {compt}/{outermostShellName} DIFF_DOWN prev_C thick
	addmsg {compt}/{outermostShellName} {compt}/{thespine}/{bottomshellname} DIFF_UP prev_C thick
 	//send buffer diffusion messages from bottom shell of spine neck to outer shell of compartement
	addmsg {compt}/{thespine}/{bottomshellname}{bname2} {compt}/{outermostShellName}{bname2} DIFF_DOWN prev_free thick
	addmsg {compt}/{outermostShellName}{bname2} {compt}/{thespine}/{bottomshellname}{bname2} DIFF_UP prev_free thick
 	addmsg {compt}/{thespine}/{bottomshellname}{bname3} {compt}/{outermostShellName}{bname3}  DIFF_DOWN prev_free thick
	addmsg {compt}/{outermostShellName}{bname3} {compt}/{thespine}/{bottomshellname}{bname3}  DIFF_UP prev_free thick
    end	

  end

 end // end of if position...

 end // end of if ... axIS



end // end of "foreach" loop

end

Loading data, please wait...