Active dendrites shape signaling microdomains in hippocampal neurons (Basak & Narayanan 2018)

 Download zip file   Auto-launch 
Help downloading and running models
Accession:244848
The spatiotemporal spread of biochemical signals in neurons and other cells regulate signaling specificity, tuning of signal propagation, along with specificity and clustering of adaptive plasticity. Theoretical and experimental studies have demonstrated a critical role for cellular morphology and the topology of signaling networks in regulating this spread. In this study, we add a significantly complex dimension to this narrative by demonstrating that voltage-gated ion channels (A-type Potassium channels and T-type Calcium channels) on the plasma membrane could actively amplify or suppress the strength and spread of downstream signaling components. We employed a multiscale, multicompartmental, morphologically realistic, conductance-based model that accounted for the biophysics of electrical signaling and the biochemistry of calcium handling and downstream enzymatic signaling in a hippocampal pyramidal neuron. We chose the calcium – calmodulin – calcium/calmodulin-dependent protein kinase II (CaMKII) – protein phosphatase 1 (PP1) signaling pathway owing to its critical importance to several forms of neuronal plasticity, and employed physiologically relevant theta-burst stimulation (TBS) or theta-burst pairing (TBP) protocol to initiate a calcium microdomain through NMDAR activation at a synapse.
Reference:
1 . Basak R, Narayanan R (2018) Active dendrites regulate the spatiotemporal spread of signaling microdomains. PLoS Comput Biol 14:e1006485 [PubMed]
Citations  Citation Browser
Model Information (Click on a link to find other models with that property)
Model Type: Dendrite; Synapse; Channel/Receptor; Neuron or other electrically excitable cell;
Brain Region(s)/Organism: Hippocampus;
Cell Type(s): Hippocampus CA1 pyramidal GLU cell;
Channel(s): Ca pump; I A; I_SERCA; I Calcium; I_K,Na; I h; I Potassium;
Gap Junctions:
Receptor(s): AMPA; NMDA;
Gene(s):
Transmitter(s):
Simulation Environment: NEURON;
Model Concept(s): Active Dendrites; Detailed Neuronal Models; Calcium dynamics; Reaction-diffusion; Signaling pathways; Synaptic Plasticity;
Implementer(s): Basak, Reshma [reshmab at iisc.ac.in]; Narayanan, Rishikesh [rishi at iisc.ac.in];
Search NeuronDB for information about:  Hippocampus CA1 pyramidal GLU cell; AMPA; NMDA; I A; I h; I Calcium; I Potassium; I_SERCA; I_K,Na; Ca pump;
/
Basak_Narayayanan_2018
Spine1000_sample
readme.txt
apamp.mod
caminmax.mod
car.mod
cat.mod
ghkampa.mod
ghknmda.mod
h.mod
kadist.mod *
kaprox.mod
kdrca1.mod *
modcamechs.mod
na3.mod
nax.mod
vmax.mod
distance.hoc
distance_SD.hoc
Fig_13.hoc
mosinit.hoc
n123.hoc *
ObliquePath.hoc *
oblique-paths.hoc *
Sample_output_Calcium.txt
                            
load_file("nrngui.hoc")
create soma[1], apical[1], basal[1]
objectvar st
objectvar sh
strdef str1

tstop = 1500
steps_per_ms = 40
ra     = 200			
rm     = 60000
c_m       = 0.75

v_init    = -65
celsius   = 30

t = 0.025

proc setpassive() {
	forall {
	  	insert pas
	  	cm = c_m 
	  	e_pas = v_init
		Ra=ra
		g_pas=1/rm
	}
}

objref Trunk

proc load_3dcell() {
	xopen("n123.hoc")
	forall { 
		soma area(0.5)
		nseg = int((L/(0.1*lambda_f(100))+.9)/2)*2 + 1  
		totcomp=totcomp+nseg
	}
	setpassive()
	access soma[0]
	Trunk = new SectionList()
	soma[0]  Trunk.append() // 13.40um from soma
	apical[0]  Trunk.append() // 13.40um from soma
	apical[4]  Trunk.append() // 46.03 
	apical[6]  Trunk.append() // 45.75
	apical[14] Trunk.append() // 52.53
	apical[15] Trunk.append() // 58.97
	apical[16] Trunk.append() // 70.89
	apical[22] Trunk.append() // 72.93
	apical[23] Trunk.append() // 74.48
	apical[25] Trunk.append() // 93.56
	apical[26] Trunk.append() // 98.55
	apical[27] Trunk.append() // 121.89
	apical[41] Trunk.append() // 144.46
	apical[42] Trunk.append() // 142.81
	apical[46] Trunk.append() // 156.96
	apical[48] Trunk.append() // 162.99
	apical[56] Trunk.append() // 179.58
	apical[58] Trunk.append() // 180.11
	apical[60] Trunk.append() // 210.33
	apical[62] Trunk.append() // 222.80
	apical[64] Trunk.append() // 233.67
	apical[65] Trunk.append() // 252.71
	apical[69] Trunk.append() // 292.06
	apical[71] Trunk.append() // 324.53
	apical[81] Trunk.append() // 346.84
	apical[83] Trunk.append() // 387.00
	apical[95] Trunk.append() // 413.05
	apical[103] Trunk.append() // 417.73
	apical[104] Trunk.append() // 423.75
}	

/*****************************************************************/

objref netlist, s, ampasyn, f1, DEND, sapamp, sampvec, sampvec
objref SD
strdef  str2

somax=2.497
somay=-13.006
somaz=11.12
double distances[200]

proc compute_distances() {
	
		wopen("n123_SD.dis")
		load_3dcell()
		access soma[0]
		distance()
		SD = new SectionList()
		
		forsec "soma" {
			SD.append()
		}

		forsec "basal" { 
			SD.append()
		}

		forsec "apical"{
			SD.append()
		}


		DEND = new SectionList()
		forsec "basal" { 
			DEND.append()
		}
		forsec "apical"{
			DEND.append()
		}

		forsec SD {
			for(x) {
				if(x!=0){
					//rdist=raddist(x)
					rdist=distance(x)
					fprint("%s\t%f\t%f\n", secname(),x,rdist) 
					print secname(), "\t\t", x,"\t\t", rdist, "\t\t", distance(x)
				}	
			}	
		}
		wopen()
}

/*****************************************************************/

func raddist() {
	distn0=distance(0)
	distances[0]=0
	sum=0

	for i=1,n3d()-1 {
		xx=(x3d(i)-x3d(i-1))*(x3d(i)-x3d(i-1))
		yy=(y3d(i)-y3d(i-1))*(y3d(i)-y3d(i-1))
		zz=(z3d(i)-z3d(i-1))*(z3d(i)-z3d(i-1))
		sum=sum+sqrt(xx+yy+zz)
		distances[i]=sum
	}

	xval=$1

// Amoung the various pt3d's find which one matches the distance of
// current x closely

	distn=distance(xval)
	match=distn-distn0
	matchptdist=100000
	for i=0,n3d()-1 {		
		matptdist=(match-distances[i])*(match-distances[i])
		if(matchptdist>matptdist){
			matchptdist=matptdist
			matchi=i
		}
	}

	//print "Match for ", x, " is ", matchi, " XDIST ", match, " MATCH ", distances[matchi], " ERROR ", sqrt(matchptdist)

			
// Find the distance of the closely matched point to the somatic
// centroid and use that as the distance for this BPAP measurement			

	xx=(x3d(matchi)-somax)*(x3d(matchi)-somax)
	yy=(y3d(matchi)-somay)*(y3d(matchi)-somay)
	zz=(z3d(matchi)-somaz)*(z3d(matchi)-somaz)
	return sqrt(xx+yy+zz)
}

/*****************************************************************/
proc update_init(){
    finitialize(v_init)
    fcurrent()
}	
 
/*****************************************************************/
// CA3b4: Centroid of Soma is: -2.68892  13.0872  1.07191

/*

proc saveradialamps(){local count, distn, nlcount, distn0, sum, match,\
						matchptdist, matchptdist, raddist

	wopen($s1)
	count=0
	nlcount=0

	forall {
		distn0=distance(0)
		distances[0]=0
		sum=0

		for i=1,n3d()-1 {
			xx=(x3d(i)-x3d(i-1))*(x3d(i)-x3d(i-1))
			yy=(y3d(i)-y3d(i-1))*(y3d(i)-y3d(i-1))
			zz=(z3d(i)-z3d(i-1))*(z3d(i)-z3d(i-1))
			sum=sum+sqrt(xx+yy+zz)
			distances[i]=sum
		}

		for (x) {

// Amoung the various pt3d's find which one matches the distance of
// current x closely

			distn=distance(x)
			match=distn-distn0
			matchptdist=100000
			for i=0,n3d()-1 {		
				matptdist=(match-distances[i])*(match-distances[i])
				if(matchptdist>matptdist){
					matchptdist=matptdist
					matchi=i
				}
			}

			//print "Match for ", x, " is ", matchi, " XDIST ", match, " MATCH ", distances[matchi], " ERROR ", sqrt(matchptdist)

			
// Find the distance of the closely matched point to the somatic
// centroid and use that as the distance for this BPAP measurement			

			xx=(x3d(matchi)-somax)*(x3d(matchi)-somax)
			yy=(y3d(matchi)-somay)*(y3d(matchi)-somay)
			zz=(z3d(matchi)-somaz)*(z3d(matchi)-somaz)
			raddist=sqrt(xx+yy+zz)

			if (ampvec[count].size()>0){
				fprint("%s\t%f\t%f\n", secname(), raddist, \
						ampvec[count].x[0]-v_init)
			} else {
				nlcount=nlcount+1
				fprint("%s\t%f\t0\n", secname(), raddist)
			}	
			count=count+1
		}	
	}
	print "Nilcount = ", nlcount
	wopen()
}	

*/

compute_distances()