NMDA receptors enhance the fidelity of synaptic integration (Li and Gulledge 2021)

 Download zip file 
Help downloading and running models
Accession:266802
Excitatory synaptic transmission in many neurons is mediated by two co-expressed ionotropic glutamate receptor subtypes, AMPA and NMDA receptors, that differ in their kinetics, ion-selectivity, and voltage-sensitivity. AMPA receptors have fast kinetics and are voltage-insensitive, while NMDA receptors have slower kinetics and increased conductance at depolarized membrane potentials. Here we report that the voltage-dependency and kinetics of NMDA receptors act synergistically to stabilize synaptic integration of excitatory postsynaptic potentials (EPSPs) across spatial and voltage domains. Simulations of synaptic integration in simplified and morphologically realistic dendritic trees revealed that the combined presence of AMPA and NMDA conductances reduces the variability of somatic responses to spatiotemporal patterns of excitatory synaptic input presented at different initial membrane potentials and/or in different dendritic domains. This moderating effect of the NMDA conductance on synaptic integration was robust across a wide range of AMPA-to-NMDA ratios, and results from synergistic interaction of NMDA kinetics (which reduces variability across membrane potential) and voltage-dependence (which favors stabilization across dendritic location). When combined with AMPA conductance, the NMDA conductance balances voltage- and impedance-dependent changes in synaptic driving force, and distance-dependent attenuation of synaptic potentials arriving at the axon, to increase the fidelity of synaptic integration and EPSP-spike coupling across neuron state (i.e., initial membrane potential) and dendritic location of synaptic input. Thus, synaptic NMDA receptors convey advantages for synaptic integration that are independent of, but fully compatible with, their importance for coincidence detection and synaptic plasticity.
Reference:
1 . Li C, Gulledge AT (2021) NMDA receptors enhance the fidelity of synaptic integration eNeuro
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:
Cell Type(s): Dentate gyrus granule GLU cell; Hippocampus CA3 pyramidal GLU cell;
Channel(s): I K; I Na,t;
Gap Junctions:
Receptor(s): AMPA; NMDA;
Gene(s):
Transmitter(s): Glutamate;
Simulation Environment: NEURON;
Model Concept(s): Synaptic Integration;
Implementer(s):
Search NeuronDB for information about:  Dentate gyrus granule GLU cell; Hippocampus CA3 pyramidal GLU cell; AMPA; NMDA; I Na,t; I K; Glutamate;
/
nmda_models
Figure_2_synaptic_thresholds
0_kv.mod *
0_na.mod *
0_nmda.mod *
0_syn_g.mod *
BallStick_NoSpines.hoc
BallStickActive.hoc
BallStickCell.hoc *
Description.txt
init_BallStick.hoc
init_BallStick_Active.hoc
init_BallStick_NoSpines.hoc
makeSavestates.hoc *
makeSavestatesActive.hoc
makeSavestatesNoSpines.hoc
NoSpines_Threshold_Template.hoc
Threshold_Template.hoc *
                            
/* 
Uses the makeCell*.hoc files in parallel. Also the new ball and stick template.
*/

/************* Loading necessary files *********************/

xopen("makeSavestatesActive.hoc")
load_file("Threshold_Template.hoc")
// Uses 50 um range for threshold test, and 50 ms width Gaussian.
// Assumes savestates are already made and in the folder. Use 'makeSavestates.hoc' for each machine

/************* The procs ****************/

strdef mcVS,ThName,fName,filename
objref savestate
proc mcVolt() { local voltInput,length,startS,AMPAc localobj cell
	// Inputs:
	// $1 is v_init
	// $2 is length
	// $3 is starting seed
	// $4 is AMPA conductance, normal .0005 umho

	voltInput = $1
	length = $2
	startS = $3
	AMPAc = $4

	// Makes cell with desired voltage and length
	cell = new Cell(length,voltInput)
	v_init = voltInput

	savestate = new SaveState()
	savestate = loadSv(length,voltInput*-1)
		// Loads the savestate to a variable 'savestate'

	// Running the test
	runTh(length,cell,startS,AMPAc)
}

proc runTh() { local nSpines,startS,AMPAc
	// $1 is the number of spines (dendrite length)
	// $o2 is the cell
	// $3 is the starting seed for the trials
	// $4 is the AMPA conductance

	nSpines = $1

	startS = $3
	AMPAc = $4

	// Inputs:
	// $1: locRange is the range to be uniformly sampled in space
	// $2: gaussTime is the width of the Gaussian to be sampled for timing
	// $3: repStat is the number of repetitions for each location, to collect statistics in variation
	// $4: incrBy is the distance in microns each trial is separated by.
	// $5: branchLength is the number of spines on the tested branch.
	// $6: toggle is the kind of synapse: 0 BOTH, 1 AMPA, 2 NMDA
	// $s7: filename.
	// $8: the starting seed
	// $o9: the cell itself
	// $10: AMPA conductance, with normal .0005 umho

	// below- changed repStat from 1 to 9
	// below- changed incrBy from 20 to 10

	sprint(ThName,"Tr%dThLen%dV%dB.dat",startS,nSpines,v_init*-1)
	ThreshSpace(50,50,10,10,nSpines,0,ThName,startS,$o2,AMPAc)
	sprint(ThName,"Tr%dThLen%dV%dA.dat",startS,nSpines,v_init*-1)
	ThreshSpace(50,50,10,10,nSpines,1,ThName,startS,$o2,AMPAc)
	sprint(ThName,"Tr%dThLen%dV%dN.dat",startS,nSpines,v_init*-1)
	ThreshSpace(50,50,10,10,nSpines,2,ThName,startS,$o2,AMPAc)
}

proc init() { 
	// The right savestate must be loaded

  	finitialize(v_init)
    savestate.restore(1)
    t=0
    fcurrent()
    frecord_init()
}

obfunc loadSv() { localobj f,svstate
	// Loads the right savestate
	// $1 is the dendrite length
	// $2 is the voltage*-1

	sprint(filename,"BLen%dstdstt%d.dat",$1,$2)
	svstate = new SaveState()
	f = new File(filename)
	svstate.fread(f)
	return svstate
}

/************************************************************/
/**************** The actual script *************************/
/************************************************************/

	for vo_ind = 1,7 {	 // RMP range (1 to 7 equates to -55 to -85 mV)
		for le_ind = 1,5 {	 // Length, from 200 to 1,000 um (1 = 200 um, 5 = 1,000 um)
			for ac_ind = 5,5 {	// AMPA conductance (in hundreds of pS)
				for tr_ind = 0,0 {	// redundant
					mcVolt(((vo_ind*5)+50)*-1,le_ind*200,tr_ind,ac_ind*.0001)
				}
			}
		}
	}

Loading data, please wait...