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

 Download zip file   Auto-launch 
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
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:
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 *********************/

load_file("BallStickCell.hoc")

// Makes savestates for dendrites 200-1000 microns and voltages -55 to -85 mV.

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

strdef mcVS,fName,filename
objref savestate
proc mcVolt() { local voltInput,length localobj cell
	// Inputs:
	// $1 is v_init
	// $2 is length

	voltInput = $1
	length = $2

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

	makeSv(length)
		// makeSv() makes the savestate for the cell type; the file is labelled with length and Vm
}

proc makeSv() { localobj f,sv
	// Makes a savestate with labels for length and voltage.
	// Does not set v_init: that must be declared before calling makeSv()
		// Input:
		// $1 is the length of the ball and stick model's dendrite.

	tstop = 1000
	init1()
		// init1 used because no savestate has been made yet
	
	while (t<tstop) {
		fadvance()
	}

	sprint(fName,"BLen%dstdstt%d.dat",$1,v_init*-1)
	f = new File(fName)
	sv = new SaveState()
	sv.save()
	sv.fwrite(f)
	f.close()
}

proc init1() {
	// An init proc if no savestate has been made yet.
	// Needs v_init to be declared prior to calling.
  	finitialize(v_init)
    t=0
    fcurrent()
    frecord_init()
}

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


	for vo_ind = 1,7 {
		for le_ind = 1,5 {
				mcVolt(((vo_ind*5)+50)*-1,le_ind*200)
		}
	}