CA1 pyramidal neuron (Combe et al 2018)

 Download zip file   Auto-launch 
Help downloading and running models
Accession:244416
"Gamma oscillations are thought to play a role in learning and memory. Two distinct bands, slow (25-50 Hz) and fast (65-100 Hz) gamma, have been identified in area CA1 of the rodent hippocampus. Slow gamma is phase-locked to activity in area CA3 and presumably driven by the Schaffer collaterals. We used a combination of computational modeling and in vitro electrophysiology in hippocampal slices of male rats to test whether CA1 neurons responded to Schaffer collateral stimulation selectively at slow gamma frequencies, and to identify the mechanisms involved. Both approaches demonstrated that in response to temporally precise input at Schaffer collaterals, CA1 pyramidal neurons fire preferentially in the slow gamma range regardless of whether the input is at fast or slow gamma frequencies, suggesting frequency selectivity in CA1 output with respect to CA3 input. In addition, phase-locking, assessed by the vector strength, was more precise for slow gamma than fast gamma input. ..."
Reference:
1 . Combe CL, Canavier CC, Gasparini S (2018) Intrinsic Mechanisms of Frequency Selectivity in the Proximal Dendrites of CA1 Pyramidal Neurons. J Neurosci 38:8110-8127 [PubMed]
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: Hippocampus;
Cell Type(s): Hippocampus CA1 pyramidal GLU cell;
Channel(s): I Na,p; I Na,t; I L high threshold; I T low threshold; I A; I K; I M; I h; I K,Ca; I Calcium;
Gap Junctions:
Receptor(s):
Gene(s):
Transmitter(s):
Simulation Environment: NEURON;
Model Concept(s): Gamma oscillations;
Implementer(s): Canavier, CC;
Search NeuronDB for information about:  Hippocampus CA1 pyramidal GLU cell; I Na,p; I Na,t; I L high threshold; I T low threshold; I A; I K; I M; I h; I K,Ca; I Calcium;
/
CombeEtAl2018
experiment
lib
pc2b
template
readme.html
cad.mod
cagk.mod
cal.mod *
calH.mod
car.mod
cat.mod
d3.mod *
exp2i.mod *
h.mod
kadist.mod
kaprox.mod
kca.mod
kcasimple.mod
kdr.mod
km.mod
na3.mod
na3dend.mod
na3notrunk.mod
nap.mod
nax.mod
netstims.mod
nmdanet.mod
somacar.mod
stim2.mod *
cell-setup.hoc
fixnseg.hoc
init.hoc
mosinit.hoc *
multisyn.hoc
print.ses
screenshot1.png
screenshot2.png
screenshot3.png
screenshot4.png
simplestim.hoc
trunk.ses
                            
back=0

//////// load needed templates////////////
if(!back)load_file("nrngui.hoc")
if(!back){ load_file("nrngui.hoc")               }
if(!back){ load_file("template/ObliquePath.hoc") }
if(!back){ load_file("template/BasalPath.hoc"  ) }
load_file("fixnseg.hoc")

objref econ,f1,f2,f3,ss,cvode
f1= new File()
f2= new File()
f3= new File()
ss=new SaveState()                                                                  
cvode = new CVode(1)
x=cvode.active(1)

restart=0
v_init=-70

strdef morphology_location, morpho_path, ObliqueTrunkSection, BasalTrunkSection
objref vRP, vAPEX

proc xopen_morphology(){
	sprint(morpho_path,"%s/%s",morphology_location,$s1)
	xopen(morpho_path)
}

// Carmen
// Carmen
morphology_location = "pc2b"
ObliqueTrunkSection = "trunk[17]"
BasalTrunkSection   = "trunk[7]"

xopen_morphology("cell.hoc")				//reads morpholofy from the file
xopen_morphology("cell-analysis-simple.hoc") //reads simplified version of CA 


			// --------------- Creating lists-----------------

xopen("lib/TP-lib.hoc")
Tip_sections(apical_non_trunk_list,apical_trunk_list,"Apical")		
objref apical_tip_list
apical_tip_list=TP_list							// Apical Tip list

print "apical_tip_list"
apical_tip_list.printnames()
print  "END apical_tip_list"

objref tmp_pl[num_tips],pl[num_tips],opl[num_tips],degree_apical_tip,peri_trunk_list
objref bl[num_tips],obl[num_tips],degree_basal_tip
xopen("lib/Oblique-lib.hoc")
oblique_sections(apical_tip_list,apical_trunk_list,num_tips)		// apical dendrite path lists and degree of tips

xopen("lib/vector-distance.hoc")


//-----------------------------------------------------------------------------------------------------
printf("Setting up cell\n")                                         // load cell-setup to
xopen("cell-setup.hoc")                                             // specify all mechanisms, membrane properties etc


///////////////////Load File//////////////////////

//if(!back) load_file("syndebug.ses")
if(!back) load_file("trunk.ses")
/*cvode_active(1)*/

//////   Spike counter//////////

objref apc, v1

proc insert_APC() {
	apc = new APCount(0.5)
	apc.thresh = $1
	v1 = new Vector()
	apc.record(v1)
}

proc init() {
	if(restart){
		f1.ropen("state.old")
		ss.fread(f1)
		f1.close
		finitialize(v_init)
		ss.restore()
		t=0
		fcurrent()
		cvode.re_init()
	} else {
		finitialize(v_init)
		fcurrent()
	}
}

//////    IClamp    ///////
objectvar clamp
proc insert_IClamp() {
	clamp = new MyIClamp(0.5)
	clamp.del = $3
	clamp.dur = $1
	clamp.amp = $2
	clamp.amp2 = $4
}



            
////////////////////Main///////////////////

nsyn=22
objref  s[nsyn], rsyn[nsyn], nc[nsyn]
objref rsynmda[nsyn], ncnmda[nsyn]

proc main(){
	//tol=cvode.atolscale(&soma.v(0.5),1e-8)
	period=95.75
	phase0=67.8234
	dur=3
	amp2=0.0
	tstop=4000

	in=0

	th=-14
	access soma
	insert_APC(th)

	f3.wopen("spike.dat")
	current=0.0 // 0.18
	del= phase0+0.05*period
	dur=3
	del=50
	access soma
	insert_IClamp(dur,current,del,amp2)

	dist=14
	rel=0.5
        interval=25 // 10 25
        ampa= 1.2*0.00156
        nmda=1.2*0.000882
        Alpha=0.35
        Beta=0.035


		for j=0, 5 {
	trunk[10+j] { 
	//apic[46]  
			s[j] = new NetStims(rel)
			s[j].interval=interval
			s[j].number = 10
			s[j].noise=0
			s[j].start=1000

			rsynmda[j] = new nmdanet(rel)
			rsyn[j] = new Exp2Syn(rel)
			rsyn[j].e=0
			rsyn[j].tau1 = .5
			rsyn[j].tau2 = 1.0

			nc[j] = new NetCon(s[j],rsyn[j],0,0,ampa)  //8*4.2e-3 new

			ncnmda[j] = new NetCon(s[j],rsynmda[j],0,0,nmda) //pc2b 1 new
                        rsynmda[j].Alpha=Alpha
                        rsynmda[j].Beta=Beta
	}
}
		for i=0, 5 {
	apic[27+i] { 
	//apic[46]  
			s[i+6] = new NetStims(rel)
			s[i+6].interval=interval
			s[i+6].number = 10
			s[i+6].noise=0
			s[i+6].start=1000

			rsynmda[i+6] = new nmdanet(rel)
			rsyn[i+6] = new Exp2Syn(rel)
			rsyn[i+6].e=0
			rsyn[i+6].tau1 = .5
			rsyn[i+6].tau2 = 1.0

			nc[i+6] = new NetCon(s[i+6],rsyn[i+6],0,0,ampa)  //8*4.2e-3 new

			ncnmda[i+6] = new NetCon(s[i+6],rsynmda[i+6],0,0,nmda) //pc2b 1 new
                        rsynmda[i+6].Alpha=Alpha
                        rsynmda[i+6].Beta=Beta
	}
}

	rel=0.2
		for i=0, 3 {
	apic[28+i] { 
	//apic[46]  
			s[i+12] = new NetStims(rel)
			s[i+12].interval=interval
			s[i+12].number = 10
			s[i+12].noise=0
			s[i+12].start=1000

			rsynmda[i+12] = new nmdanet(rel)
			rsyn[i+12] = new Exp2Syn(rel)
			rsyn[i+12].e=0
			rsyn[i+12].tau1 = .5
			rsyn[i+12].tau2 = 1.0

			nc[i+12] = new NetCon(s[i+12],rsyn[i+12],0,0,ampa)  //8*4.2e-3 new

			ncnmda[i+12] = new NetCon(s[i+12],rsynmda[i+12],0,0,nmda) //pc2b 1 new
                        rsynmda[i+12].Alpha=Alpha
                        rsynmda[i+12].Beta=Beta
	}
}
	rel=0.8
		for i=0, 3 {
	apic[28+i] { 
	//apic[46]  
			s[i+16] = new NetStims(rel)
			s[i+16].interval=interval
			s[i+16].number = 10
			s[i+16].noise=0
			s[i+16].start=1000

			rsynmda[i+16] = new nmdanet(rel)
			rsyn[i+16] = new Exp2Syn(rel)
			rsyn[i+16].e=0
			rsyn[i+16].tau1 = .5
			rsyn[i+16].tau2 = 1.0

			nc[i+16] = new NetCon(s[i+16],rsyn[i+16],0,0,ampa)  //8*4.2e-3 new

			ncnmda[i+16] = new NetCon(s[i+16],rsynmda[i+16],0,0,nmda) //pc2b 1 new
                        rsynmda[i+16].Alpha=Alpha
                        rsynmda[i+16].Beta=Beta
	}
}
	//////////////run//////////////////////// 
	geom_nseg()
	run()
	/////////////////////////////////////
	// print the spike number 
	if(!back) printf("\n Current: %.4f nA | # Spikes: %d\n", current,  apc.n)
	if(!back) printf("___________________\n")
	v1.printf(f3)

	f3.close
	f2.wopen("state.new")
	ss.save
	ss.fwrite(f2)
	f2.close
}

main()
/********    end file    ******/