STDP and NMDAR Subunits (Gerkin et al. 2007)

 Download zip file 
Help downloading and running models
Accession:87216
The paper argues for competing roles of NR2A- and NR2B-containing NMDARs in spike-timing-dependent plasticity. This simple dynamical model recapitulates the results of STDP experiments involving selective blockers of NR2A- and NR2B-containing NMDARs, for which the stimuli are pre- and postsynaptic spikes in varying combinations. Experiments were done using paired recordings from glutamatergic neurons in rat hippocampal cultures. This model focuses on the dynamics of the putative potentiation and depression modules themselves, and their interaction For detailed dynamics involving NMDARs and Ca2+ transients, see Rubin et al., J. Neurophys., 2005.
Reference:
1 . Gerkin RC, Lau PM, Nauen DW, Wang YT, Bi GQ (2007) Modular competition driven by NMDA receptor subtypes in spike-timing-dependent plasticity. J Neurophysiol 97:2851-62 [PubMed]
Model Information (Click on a link to find other models with that property)
Model Type: Synapse;
Brain Region(s)/Organism:
Cell Type(s): Hippocampus CA1 pyramidal cell; Hippocampus CA3 pyramidal cell;
Channel(s):
Gap Junctions:
Receptor(s): NMDA;
Gene(s): NR2A GRIN2A; NR2B GRIN2B;
Transmitter(s):
Simulation Environment: IGOR Pro;
Model Concept(s): Activity Patterns; Synaptic Plasticity; Long-term Synaptic Plasticity; Signaling pathways; Synaptic Integration; Winner-take-all; STDP;
Implementer(s):
Search NeuronDB for information about:  Hippocampus CA1 pyramidal cell; Hippocampus CA3 pyramidal cell; NMDA;
/
gerkinetal2007
readme.txt
code.txt
Gerkin_JNeurophys_2007.pxp
Instructions.rtf
                            
#pragma rtGlobals=1		// Use modern global access method.

// Function for running the simulation.  
Function GerkinSimulate(ctrlName)
	String ctrlName
	
	// Access all the global variables (the simulation parameters)
	SetDataFolder root:Parameters
	NVar duration // in milliseconds.
	NVar frequency // stimulus frequency in Hz.
	NVar pulse_width // width of the pulse (AB or BA) in milliseconds.
	NVar ab_on,ba_on
	NVar timing // The timing in between doublets, ba - ab, in milliseconds.
	NVar dt // Simulation time-scale, in milliseconds.  
	NVar p_off,d_off,v_off,lambda,p_steep,d_steep,w_off,NR2A,NR2B
	
	// Initialize the waves that track the evolution of the dynamics variables.  
	SetDataFolder root:
	Variable time_steps=duration/dt
	Make /o /n=(time_steps) AB_=0,BA_=0,P_=0,D_=0,V_=0,W_=0
	SetScale /P x,0,dt,AB_,BA_,P_,D_,V_,W_
	Variable t // Tracks time in milliseconds.
	
	// Set stimulus waves AB and BA according to the parameters.
	Variable thyme=1000/(2*frequency)
	Variable point_timing=round(timing/dt)
	Variable point_width=round(pulse_width/dt)
	for(t=0;t<time_steps;t+=1)
		thyme+=dt
		if(thyme>1000/frequency)
			AB_[t,t+point_width-1]=ab_on ? 1 : 0
			BA_[t+point_timing,t+point_timing+point_width-1]=ba_on ? 1 : 0
			thyme=0
		endif
	endfor
	
	// Run simulation.  
	for(t=1;t<time_steps;t+=1)
		P_[t]=P_[t-1]+dt*     (AB_[t] - p_off*P_[t-1])*NR2A
		D_[t]=D_[t-1]+dt*     (BA_[t] + AB_[t] - d_off*(D_[t-1] + lambda*V_[t-1]*D_[t-1]))*NR2B
		V_[t]=V_[t-1]+dt*      (AB_[t] - v_off*V_[t-1])*NR2B
		W_[t]=W_[t-1]+dt*   (1/(1+exp((1-P_[t-1])/p_steep)) - 1/(1+exp((1-D_[t-1])/d_steep)) - w_off*W_[t-1])
	endfor
	
	// Show results if they are not already displayed.  
	if(!strlen(WinList("Results",";","")))
		Display /K=1 /N=Results W_
		DoWindow /T Results,"Results"
		Label left "Plasticity Readout"
		Label bottom "Time (s)"
		ModifyGraph prescaleExp(bottom)=-3
	endif
End

// Function to generate the simulation controller panel.  
Function GerkinController()
	NewPanel /K=1 /N=$"Simulation_Controller" /W=(100,100,320,600)
	GerkinInitialize("")
	Variable i
	SetDataFolder root:Parameters
	String vars=VariableList("*",";",4) // All the variables in the current folder.  
	SetDataFolder root:
	String var_name
	
	// Loop to add all the variables listed in 'vars' to the controller panel.  
	for(i=0;i<ItemsInList(vars);i+=1)
		var_name=StringFromList(i,vars)
		NVar var=root:Parameters:$var_name
		SetVariable $var_name size={100,25},variable=var
	endfor
	
	Button Go,proc=GerkinSimulate,title="Go"
	Button Reset,proc=GerkinInitialize,title="Reset"
End

// Initialize all the parameters.  
Function GerkinInitialize(ctrlName)
	String ctrlName
	NewDataFolder /O/S root:Parameters
	Variable /G duration=5000 // in milliseconds.
	Variable /G frequency=1 // in Hz.
	Variable /G pulse_width=5 // in milliseconds.
	Variable /G ab_on=1
	Variable /G ba_on=1
	Variable /G timing=10 // ba - ab, in milliseconds.
	Variable /G dt=0.01 // Simulation time-scale, in milliseconds.  
	Variable /G p_off=1/30
	Variable /G d_off=1/30
	Variable /G v_off=1
	Variable /G lambda=1000
	Variable /G p_steep=1/5
	Variable /G d_steep=1/5
	Variable /G w_off=1/3000
	Variable /G nr2a=1
	Variable /G nr2b=1
	SetDataFolder root:
End


Loading data, please wait...