ModelDB is moving. Check out our new site at https://modeldb.science. The corresponding page is https://modeldb.science/184054.

CA1 pyramidal neuron: Dendritic Na+ spikes are required for LTP at distal synapses (Kim et al 2015)

 Download zip file 
Help downloading and running models
Accession:184054
This model simulates the effects of dendritic sodium spikes initiated in distal apical dendrites on the voltage and the calcium dynamics revealed by calcium imaging. It shows that dendritic sodium spike promotes large and transient calcium influxes via NMDA receptor and L-type voltage-gated calcium channels, which contribute to the induction of LTP at distal synapses.
Reference:
1 . Kim Y, Hsu CL, Cembrowski MS, Mensh BD, Spruston N (2015) Dendritic sodium spikes are required for long-term potentiation at distal synapses on hippocampal pyramidal neurons. Elife [PubMed]
Model Information (Click on a link to find other models with that property)
Model Type: Neuron or other electrically excitable cell; Synapse; Channel/Receptor; Dendrite;
Brain Region(s)/Organism: Hippocampus;
Cell Type(s): Hippocampus CA1 pyramidal GLU cell;
Channel(s): I L high threshold; I K; Ca pump; I Sodium;
Gap Junctions:
Receptor(s): AMPA; NMDA;
Gene(s):
Transmitter(s): Glutamate;
Simulation Environment: NEURON;
Model Concept(s): Dendritic Action Potentials; Ion Channel Kinetics; Active Dendrites; Detailed Neuronal Models; Synaptic Plasticity; Long-term Synaptic Plasticity; Synaptic Integration; Calcium dynamics; Conductance distributions;
Implementer(s): Cembrowski, Mark S [cembrowskim at janelia.hhmi.org]; Hsu, Ching-Lung [hsuc at janelia.hhmi.org];
Search NeuronDB for information about:  Hippocampus CA1 pyramidal GLU cell; AMPA; NMDA; I L high threshold; I K; I Sodium; Ca pump; Glutamate;
/
fullMorphCaLTP8
fullMorphCaLTP8
calH.mod
cdp.mod
id.mod
kad.mod *
kap.mod *
kdr.mod *
na3.mod *
nmdaSyn.mod
spgen2.mod
analyseTBSCC.hoc
channelParameters.hoc
displayPanels.hoc
doTBSStimCC.hoc
getVoltageIntegral.hoc
init.hoc
initializationAndRun.hoc
morphology_ri06.nrn *
naceaxon.nrn *
plotTBSCC.hoc
preallocate.hoc
resetNSeg.hoc *
runTBSCC.hoc
seclists.hoc
start.hoc
                            
////////////////////////////////////////////////////////////////////////////////
//
// PLOT RESULTS
//
////////////////////////////////////////////////////////////////////////////////

{
	load_file("../commonFcns/getCumHist.hoc")
	load_file("../commonFcns/getBargraphVec.hoc")
	
	load_file("../commonFcns/decimal.hoc")
	load_file("../commonFcns/mod.hoc")
}

///////////////////////////////////////////////////////////////////////////////
// RESPONSE AT AN EXAMPLARY DENDRITIC LOCATION
///////////////////////////////////////////////////////////////////////////////

objref voltExGraph,nmdaExGraph,ogbExGraph,calHExGraph
objref voltExBox,nmdaExBox,ogbExBox,calHExBox

// below are parameters used for graphing
voltLowY = -60
voltHighY = -10
nmdaLowY = -0.0012
nmdaHighY = 0
ogbLowY = 0
ogbHighY = 0.05 //1.1
ogbLowYB = -0.5 //0
ogbHighYB = 5 //1.1
calHLowY = -0.015
calHHighY = 0

exSyn = 102 // 61

exLeft = 250 
peakLeft = 400
histLeft = 700
momentLeft = 800


voltExBox = new HBox()                          // plot the response at exSyn												
{
	voltExBox.intercept(1)                      
	{
		voltExGraph = new Graph()
		voltACSF[exSyn].plot(voltExGraph,time,1,1)
		voltDrug[exSyn].plot(voltExGraph,time,CL,1)
		voltExGraph.label("Voltage, Control")
		voltExGraph.color(CL)
		voltExGraph.label("Voltage, Simulated drug")
		voltExGraph.size(0,100,voltLowY,voltHighY)
	}
	voltExBox.intercept(0)
	voltExBox.map("Example voltage",exLeft,0,300,300)
	voltExGraph.exec_menu("View = plot")
}

nmdaExBox = new HBox()
{
	nmdaExBox.intercept(1)
	{
		nmdaExGraph = new Graph()
		nmdaACSF[exSyn].plot(nmdaExGraph,time,1,1)
		nmdaDrug[exSyn].plot(nmdaExGraph,time,CL,1)
		nmdaExGraph.label("I_Ca,NMDA, Control")
		nmdaExGraph.color(CL)
		nmdaExGraph.label("I_Ca,NMDA, Simulated drug")
		nmdaExGraph.size(0,100,nmdaLowY,nmdaHighY)
	}
	nmdaExBox.intercept(0)
	nmdaExBox.map("Example I_Ca,NMDA",exLeft,300,300,300)
	nmdaExGraph.exec_menu("View = plot")
}

ogbExBox = new HBox()                  
{
	ogbExBox.intercept(1) 
	{
		ogbExGraph = new Graph()
		ogbACSF[exSyn].plot(ogbExGraph,time,1,1)
		ogbDrug[exSyn].plot(ogbExGraph,time,CL,1)
		ogbExGraph.label("[Ca]OGB, Control")
		ogbExGraph.color(CL)
		ogbExGraph.label("[Ca]OGB, Simulated drug")
		ogbExGraph.size(0,100,ogbLowY,ogbHighY)
	}
	ogbExBox.intercept(0)
	ogbExBox.map("Example [Ca]OGB",exLeft,600,300,300)
	ogbExGraph.exec_menu("View = plot")
}

calHExBox = new HBox() 
{
	calHExBox.intercept(1) 
	{
		calHExGraph = new Graph()
		calHACSF[exSyn].plot(calHExGraph,time,1,1)
		calHDrug[exSyn].plot(calHExGraph,time,CL,1)
		calHExGraph.label("I_Ca,L-Cav, Control")
		calHExGraph.color(CL)
		calHExGraph.label("I_Ca,L-Cav, Simulated drug")
		calHExGraph.size(0,100,calHLowY,calHHighY)
	}
	calHExBox.intercept(0)
	calHExBox.map("Example I_Ca,L-Cav",exLeft,900,300,300)
	calHExGraph.exec_menu("View = plot")
}

///////////////////////////////////////////////////////////////////////////////
// RESPONSE AT THE DENDRITIC APICAL TRUNK ~300 um FROM THE SOMA
///////////////////////////////////////////////////////////////////////////////

objref integralGraph
integralGraph = new Graph()
strdef dendIntegralLabel
{
	// write label
	sprint(dendIntegralLabel,"%s%.2g","At the trunk, ratio of integrals = ",dendIntRatio)

	// plot to graph
	dendACSF.plot(integralGraph,time,1,1)
	dendDrug.plot(integralGraph,time,CL,1)
	integralGraph.label("Voltage at apical trunk, Control")
	integralGraph.color(CL)
	integralGraph.label("Voltage at apical trunk, Simulated drug")
	integralGraph.exec_menu("View = plot")
	
	// label graphs
	integralGraph.label(dendIntegralLabel)
}


///////////////////////////////////////////////////////////////////////////////
// SHAPE PLOT OF RECORDING LOCATIONS
///////////////////////////////////////////////////////////////////////////////

numDum = 2
objref vBoxShape,shplot,dumCC[numDum]

// build dummy current clamps and demarcate locations
{
	// simulated recording sites
	dendA5_01111111111111 {dumCC[0] = new IClamp(0.5)}
	// exSyn = 102
	dendA5_0111111111111111111 {
		dumCC[1] = new IClamp(0.78571429)
	}
	// exSyn = 61
	//dendA5_0111111111111111111 {
	//	dumCC[1] = new IClamp(0.35714286)
	//}
	for m=1,numDum {
		dumCC[m-1].dur = 0
		dumCC[m-1].amp = 0
	}
	
	vBoxShape = new VBox()
	vBoxShape.intercept(1)
	shplot = new Shape()
	
	for m=1,numSyn {
		shplot.point_mark(nmda[m-1],1,"O",6)
	}
	
	
	shplot.point_mark(dumCC[0],2,"O",12)
	shplot.point_mark(dumCC[1],3,"O",12)

	shplot.label("Large circles: recording sites")
	shplot.label("Black: Synapses")
	shplot.exec_menu("Whole Scene")
	shplot.flush()
	vBoxShape.intercept(0)
	vBoxShape.map("Spatial distribution of point processes",1200,0,500,900)
	shplot.exec_menu("View = plot")
	shplot.exec_menu("Show Diam")
}



///////////////////////////////////////////////////////////////////////////////
//
// GENERATE SUMMARY PLOTS
//
///////////////////////////////////////////////////////////////////////////////

// Moments of peak responses

objref momentAxis
momentAxis = new Vector(1)	// to be used as the x-axis; doesn't really matter
momentAxis.x[0] = 1


objref voltACSFPeakMeanVec,voltDrugPeakMeanVec
objref voltACSFPeakSDVec,voltDrugPeakSDVec

{
	voltACSFPeakMeanVec = new Vector(1)
	voltACSFPeakSDVec = new Vector(1)
	voltDrugPeakMeanVec = new Vector(1)
	voltDrugPeakSDVec = new Vector(1)
	/*
	voltACSFPeakMeanVec.x[0] = voltACSFPeakSort.mean()
	voltACSFPeakSDVec.x[0] = voltACSFPeakSort.stdev()
	voltDrugPeakMeanVec.x[0] = voltDrugPeakSort.mean()
	voltDrugPeakSDVec.x[0] = voltDrugPeakSort.stdev()
	*/
	voltACSFPeakMeanVec.x[0] = voltACSFBPeakSort.mean()   
	voltACSFPeakSDVec.x[0] = voltACSFBPeakSort.stdev()
	voltDrugPeakMeanVec.x[0] = voltDrugBPeakSort.mean()
	voltDrugPeakSDVec.x[0] = voltDrugBPeakSort.stdev()
}


objref voltMomentBox,voltMomentGraph
{
	voltMomentBox = new HBox()
	voltMomentBox.intercept(1)
	{
		voltMomentGraph = new Graph()
		voltACSFPeakMeanVec.ploterr(voltMomentGraph,momentAxis,voltACSFPeakSDVec)
		voltACSFPeakMeanVec.mark(voltMomentGraph,momentAxis,"-")
		voltMomentGraph.color(CL)
		voltDrugPeakMeanVec.ploterr(voltMomentGraph,momentAxis,voltDrugPeakSDVec)
		voltDrugPeakMeanVec.mark(voltMomentGraph,momentAxis,"-")
		voltMomentGraph.size(0,2,voltLowY,voltHighY)
	}
	voltMomentBox.intercept(0)
	voltMomentBox.map("Voltage moments",momentLeft,0,100,300)
}


objref ogbACSFPeakMeanVec,ogbDrugPeakMeanVec
objref ogbACSFPeakSDVec,ogbDrugPeakSDVec

{	
	ogbACSFPeakMeanVec = new Vector(1)
	ogbACSFPeakSDVec = new Vector(1)
	ogbDrugPeakMeanVec = new Vector(1)
	ogbDrugPeakSDVec = new Vector(1)
	/*
	ogbACSFPeakMeanVec.x[0] = ogbACSFPeakSort.mean()
	ogbACSFPeakSDVec.x[0] = ogbACSFPeakSort.stdev()
	ogbDrugPeakMeanVec.x[0] = ogbDrugPeakSort.mean()
	ogbDrugPeakSDVec.x[0] = ogbDrugPeakSort.stdev()
	*/
	ogbACSFPeakMeanVec.x[0] = ogbACSFBPeakSort.mean()
	ogbACSFPeakSDVec.x[0] = ogbACSFBPeakSort.stdev()
	ogbDrugPeakMeanVec.x[0] = ogbDrugBPeakSort.mean()
	ogbDrugPeakSDVec.x[0] = ogbDrugBPeakSort.stdev()
}


objref ogbMomentBox,ogbMomentGraph
{
	ogbMomentBox = new HBox()
	ogbMomentBox.intercept(1)
	{
		ogbMomentGraph = new Graph()
		ogbACSFPeakMeanVec.ploterr(ogbMomentGraph,momentAxis,ogbACSFPeakSDVec)
		ogbACSFPeakMeanVec.mark(ogbMomentGraph,momentAxis,"-")
		ogbMomentGraph.color(CL)
		ogbDrugPeakMeanVec.ploterr(ogbMomentGraph,momentAxis,ogbDrugPeakSDVec)
		ogbDrugPeakMeanVec.mark(ogbMomentGraph,momentAxis,"-")
		//ogbRatioPeakMeanVec.ploterr(ogbMomentGraph,momentAxis,ogbRatioPeakSDVec)
		//ogbRatioPeakMeanVec.mark(ogbMomentGraph,momentAxis,"-")
		//ogbRatioBPeakMeanVec.ploterr(ogbMomentGraph,momentAxis,ogbRatioBPeakSDVec)
		//ogbRatioBPeakMeanVec.mark(ogbMomentGraph,momentAxis,"-")
		ogbMomentGraph.size(0,2,ogbLowY,ogbHighY)
	}
	ogbMomentBox.intercept(0)
	ogbMomentBox.map("Peak [Ca]OGB moments",momentLeft,600,100,300)
	//ogbMomentBox.map("Normalized peak [Ca]OGB moments",momentLeft,600,100,300)
}



// Moments of response integrals  

objref ogbACSFIntMeanVec,ogbDrugIntMeanVec
objref ogbACSFIntSDVec,ogbDrugIntSDVec

{	
	ogbACSFIntMeanVec = new Vector(1)
	ogbACSFIntSDVec = new Vector(1)
	ogbDrugIntMeanVec = new Vector(1)
	ogbDrugIntSDVec = new Vector(1)
	/*
	ogbACSFIntMeanVec.x[0] = ogbACSFIntSort.mean()
	ogbACSFIntSDVec.x[0] = ogbACSFIntSort.stdev()
	ogbDrugIntMeanVec.x[0] = ogbDrugIntSort.mean()
	ogbDrugIntSDVec.x[0] = ogbDrugIntSort.stdev()
	*/
	ogbACSFIntMeanVec.x[0] = ogbACSFBIntSort.mean()
	ogbACSFIntSDVec.x[0] = ogbACSFBIntSort.stdev()
	ogbDrugIntMeanVec.x[0] = ogbDrugBIntSort.mean()
	ogbDrugIntSDVec.x[0] = ogbDrugBIntSort.stdev()
}

objref ogbMomentBoxB,ogbMomentGraphB
{
	ogbMomentBoxB = new HBox()
	ogbMomentBoxB.intercept(1)
	{
		ogbMomentGraphB = new Graph()
		ogbACSFIntMeanVec.ploterr(ogbMomentGraphB,momentAxis,ogbACSFIntSDVec)
		ogbACSFIntMeanVec.mark(ogbMomentGraphB,momentAxis,"-")
		ogbMomentGraphB.color(CL)
		ogbDrugIntMeanVec.ploterr(ogbMomentGraphB,momentAxis,ogbDrugIntSDVec)
		ogbDrugIntMeanVec.mark(ogbMomentGraphB,momentAxis,"-")
		//ogbRatioIntMeanVec.ploterr(ogbMomentGraphB,momentAxis,ogbRatioIntSDVec)
		//ogbRatioIntMeanVec.mark(ogbMomentGraphB,momentAxis,"-")
		//ogbRatioBIntMeanVec.ploterr(ogbMomentGraphB,momentAxis,ogbRatioBIntSDVec)
		//ogbRatioBIntMeanVec.mark(ogbMomentGraphB,momentAxis,"-")
		ogbMomentGraphB.size(0,2,ogbLowYB,ogbHighYB)
	}
	ogbMomentBoxB.intercept(0)
	ogbMomentBoxB.map("Integral of [Ca]OGB moments",momentLeft,900,100,300)
	//ogbMomentBoxB.map("Normalized integral of [Ca]OGB moments",momentLeft,900,100,300)
}

Loading data, please wait...