Synthesis of spatial tuning functions from theta cell spike trains (Welday et al., 2011)

 Download zip file   Auto-launch 
Help downloading and running models
Accession:129067
A single compartment model reproduces the firing rate maps of place, grid, and boundary cells by receiving inhibitory inputs from theta cells. The theta cell spike trains are modulated by the rat's movement velocity in such a way that phase interference among their burst pattern creates spatial envelope function which simulate the firing rate maps.
Reference:
1 . Welday AC, Shlifer IG, Bloom ML, Zhang K, Blair HT (2011) Cosine directional tuning of theta cell burst frequencies: evidence for spatial coding by oscillatory interference. J Neurosci 31:16157-76 [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:
Cell Type(s): Hippocampus CA1 pyramidal GLU cell; Hippocampus CA3 pyramidal GLU cell; Entorhinal cortex stellate cell;
Channel(s): I Na,p;
Gap Junctions:
Receptor(s): GabaA; AMPA;
Gene(s):
Transmitter(s): Gaba; Glutamate;
Simulation Environment: NEURON; MATLAB;
Model Concept(s): Synchronization; Envelope synthesis; Grid cell; Place cell/field;
Implementer(s): Blair, Hugh T.;
Search NeuronDB for information about:  Hippocampus CA1 pyramidal GLU cell; Hippocampus CA3 pyramidal GLU cell; GabaA; AMPA; I Na,p; Gaba; Glutamate;
//This file reads in four theta cell spike trains from twelve disk files:
// placetheta_1.dat through placetheta_12.dat

spikefile.ropen("placetheta_1.dat")  	//open file containing spike times of one theta cell
evec[0] = new Vector()			//create a new vector to store spike time stamps
evec[0].scanf(spikefile)		//read in spike times from the file
vs0_1_VecStim[0].pp.play(evec[0])	//play the spike times into a VecStim object during the simulation
pplist.append(vs0_1_VecStim[0].pp)	//append the VecStim to the pp list
spikefile.close()			//close the data file

spikefile.ropen("placetheta_2.dat")	//repeat for each additional theta cell input...
evec[1] = new Vector()
evec[1].scanf(spikefile)
vs0_2_VecStim[0].pp.play(evec[1])
pplist.append(vs0_2_VecStim[0].pp)
spikefile.close()

spikefile.ropen("placetheta_3.dat")
evec[2] = new Vector()
evec[2].scanf(spikefile)
vs0_3_VecStim[0].pp.play(evec[2])
pplist.append(vs0_3_VecStim[0].pp)
spikefile.close()

spikefile.ropen("placetheta_4.dat") 	//open file containing spike times of one theta cell
evec[3] = new Vector()			//create a new vector to store spike time stamps
evec[3].scanf(spikefile)		//read in spike times from the file
vs0_4_VecStim[0].pp.play(evec[3])	//play the spike times into a VecStim object during the simulation
pplist.append(vs0_4_VecStim[0].pp)	//append the VecStim to the pp list
spikefile.close()			//close the data file

spikefile.ropen("placetheta_5.dat")	//repeat for each additional theta cell input...
evec[4] = new Vector()
evec[4].scanf(spikefile)
vs0_5_VecStim[0].pp.play(evec[4])
pplist.append(vs0_5_VecStim[0].pp)
spikefile.close()

spikefile.ropen("placetheta_6.dat")
evec[5] = new Vector()
evec[5].scanf(spikefile)
vs0_6_VecStim[0].pp.play(evec[5])
pplist.append(vs0_6_VecStim[0].pp)
spikefile.close()

spikefile.ropen("placetheta_7.dat")  	//open file containing spike times of one theta cell
evec[6] = new Vector()			//create a new vector to store spike time stamps
evec[6].scanf(spikefile)		//read in spike times from the file
vs0_7_VecStim[0].pp.play(evec[6])	//play the spike times into a VecStim object during the simulation
pplist.append(vs0_7_VecStim[0].pp)	//append the VecStim to the pp list
spikefile.close()			//close the data file

spikefile.ropen("placetheta_8.dat")	//repeat for each additional theta cell input...
evec[7] = new Vector()
evec[7].scanf(spikefile)
vs0_8_VecStim[0].pp.play(evec[7])
pplist.append(vs0_8_VecStim[0].pp)
spikefile.close()

spikefile.ropen("placetheta_9.dat")  	//open file containing spike times of one theta cell
evec[8] = new Vector()			//create a new vector to store spike time stamps
evec[8].scanf(spikefile)		//read in spike times from the file
vs0_9_VecStim[0].pp.play(evec[8])	//play the spike times into a VecStim object during the simulation
pplist.append(vs0_9_VecStim[0].pp)	//append the VecStim to the pp list
spikefile.close()			//close the data file

spikefile.ropen("placetheta_10.dat")	//repeat for each additional theta cell input...
evec[9] = new Vector()
evec[9].scanf(spikefile)
vs0_10_VecStim[0].pp.play(evec[9])
pplist.append(vs0_10_VecStim[0].pp)
spikefile.close()

spikefile.ropen("placetheta_11.dat")
evec[10] = new Vector()
evec[10].scanf(spikefile)
vs0_11_VecStim[0].pp.play(evec[10])
pplist.append(vs0_11_VecStim[0].pp)
spikefile.close()

spikefile.ropen("placetheta_12.dat") 	//open file containing spike times of one theta cell
evec[11] = new Vector()			//create a new vector to store spike time stamps
evec[11].scanf(spikefile)		//read in spike times from the file
vs0_12_VecStim[0].pp.play(evec[11])	//play the spike times into a VecStim object during the simulation
pplist.append(vs0_12_VecStim[0].pp)	//append the VecStim to the pp list
spikefile.close()			//close the data file

//spikefile.ropen("placetheta_13.dat")	//repeat for each additional theta cell input...
//evec[12] = new Vector()
//evec[12].scanf(spikefile)
//vs0_2_VecStim[0].pp.play(evec[12])
//pplist.append(vs0_2_VecStim[0].pp)
//spikefile.close()
//
//spikefile.ropen("placetheta_14.dat")
//evec[13] = new Vector()
//evec[13].scanf(spikefile)
//vs0_3_VecStim[0].pp.play(evec[13])
//pplist.append(vs0_3_VecStim[0].pp)
//spikefile.close()
//
//spikefile.ropen("placetheta_15.dat")  	//open file containing spike times of one theta cell
//evec[14] = new Vector()			//create a new vector to store spike time stamps
//evec[14].scanf(spikefile)		//read in spike times from the file
//vs0_1_VecStim[0].pp.play(evec[14])	//play the spike times into a VecStim object during the simulation
//pplist.append(vs0_1_VecStim[0].pp)	//append the VecStim to the pp list
//spikefile.close()			//close the data file
//
//spikefile.ropen("placetheta_16.dat")	//repeat for each additional theta cell input...
//evec[15] = new Vector()
//evec[15].scanf(spikefile)
//vs0_2_VecStim[0].pp.play(evec[15])
//pplist.append(vs0_2_VecStim[0].pp)
//spikefile.close()

//spikefile.ropen("placetheta_17.dat")	//repeat for each additional theta cell input...
//evec[16] = new Vector()
//evec[16].scanf(spikefile)
//vs0_2_VecStim[0].pp.play(evec[16])
//pplist.append(vs0_2_VecStim[0].pp)
//spikefile.close()
//
//spikefile.ropen("placetheta_18.dat")	//repeat for each additional theta cell input...
//evec[17] = new Vector()
//evec[17].scanf(spikefile)
//vs0_2_VecStim[0].pp.play(evec[17])
//pplist.append(vs0_2_VecStim[0].pp)
//spikefile.close()
//
//spikefile.ropen("placetheta_19.dat")	//repeat for each additional theta cell input...
//evec[18] = new Vector()
//evec[18].scanf(spikefile)
//vs0_2_VecStim[0].pp.play(evec[18])
//pplist.append(vs0_2_VecStim[0].pp)
//spikefile.close()
//
//spikefile.ropen("placetheta_20.dat")	//repeat for each additional theta cell input...
//evec[19] = new Vector()
//evec[19].scanf(spikefile)
//vs0_2_VecStim[0].pp.play(evec[19])
//pplist.append(vs0_2_VecStim[0].pp)
//spikefile.close()
//
//spikefile.ropen("placetheta_21.dat")	//repeat for each additional theta cell input...
//evec[20] = new Vector()
//evec[20].scanf(spikefile)
//vs0_2_VecStim[0].pp.play(evec[20])
//pplist.append(vs0_2_VecStim[0].pp)
//spikefile.close()
//
//spikefile.ropen("placetheta_22.dat")	//repeat for each additional theta cell input...
//evec[21] = new Vector()
//evec[21].scanf(spikefile)
//vs0_2_VecStim[0].pp.play(evec[21])
//pplist.append(vs0_2_VecStim[0].pp)
//spikefile.close()
//
//spikefile.ropen("placetheta_23.dat")	//repeat for each additional theta cell input...
//evec[22] = new Vector()
//evec[22].scanf(spikefile)
//vs0_2_VecStim[0].pp.play(evec[22])
//pplist.append(vs0_2_VecStim[0].pp)
//spikefile.close()
//
//spikefile.ropen("placetheta_24.dat")	//repeat for each additional theta cell input...
//evec[23] = new Vector()
//evec[23].scanf(spikefile)
//vs0_2_VecStim[0].pp.play(evec[23])
//pplist.append(vs0_2_VecStim[0].pp)
//spikefile.close()
//
//spikefile.ropen("placetheta_25.dat")	//repeat for each additional theta cell input...
//evec[24] = new Vector()
//evec[24].scanf(spikefile)
//vs0_2_VecStim[0].pp.play(evec[24])
//pplist.append(vs0_2_VecStim[0].pp)
//spikefile.close()
//
//spikefile.ropen("placetheta_26.dat")	//repeat for each additional theta cell input...
//evec[25] = new Vector()
//evec[25].scanf(spikefile)
//vs0_2_VecStim[0].pp.play(evec[25])
//pplist.append(vs0_2_VecStim[0].pp)
//spikefile.close()
//
//spikefile.ropen("placetheta_27.dat")	//repeat for each additional theta cell input...
//evec[26] = new Vector()
//evec[26].scanf(spikefile)
//vs0_2_VecStim[0].pp.play(evec[26])
//pplist.append(vs0_2_VecStim[0].pp)
//spikefile.close()
//
//spikefile.ropen("placetheta_28.dat")	//repeat for each additional theta cell input...
//evec[27] = new Vector()
//evec[27].scanf(spikefile)
//vs0_2_VecStim[0].pp.play(evec[27])
//pplist.append(vs0_2_VecStim[0].pp)
//spikefile.close()
//
//spikefile.ropen("placetheta_29.dat")	//repeat for each additional theta cell input...
//evec[28] = new Vector()
//evec[28].scanf(spikefile)
//vs0_2_VecStim[0].pp.play(evec[28])
//pplist.append(vs0_2_VecStim[0].pp)
//spikefile.close()
//
//spikefile.ropen("placetheta_30.dat")	//repeat for each additional theta cell input...
//evec[29] = new Vector()
//evec[29].scanf(spikefile)
//vs0_2_VecStim[0].pp.play(evec[29])
//pplist.append(vs0_2_VecStim[0].pp)
//spikefile.close()
//
//spikefile.ropen("placetheta_31.dat")	//repeat for each additional theta cell input...
//evec[30] = new Vector()
//evec[30].scanf(spikefile)
//vs0_2_VecStim[0].pp.play(evec[30])
//pplist.append(vs0_2_VecStim[0].pp)
//spikefile.close()
//
//spikefile.ropen("placetheta_32.dat")	//repeat for each additional theta cell input...
//evec[31] = new Vector()
//evec[31].scanf(spikefile)
//vs0_2_VecStim[0].pp.play(evec[31])
//pplist.append(vs0_2_VecStim[0].pp)
//spikefile.close()
//
//spikefile.ropen("placetheta_33.dat")	//repeat for each additional theta cell input...
//evec[32] = new Vector()
//evec[32].scanf(spikefile)
//vs0_2_VecStim[0].pp.play(evec[32])
//pplist.append(vs0_2_VecStim[0].pp)
//spikefile.close()
//
//spikefile.ropen("placetheta_34.dat")	//repeat for each additional theta cell input...
//evec[33] = new Vector()
//evec[33].scanf(spikefile)
//vs0_2_VecStim[0].pp.play(evec[33])
//pplist.append(vs0_2_VecStim[0].pp)
//spikefile.close()
//
//spikefile.ropen("placetheta_35.dat")	//repeat for each additional theta cell input...
//evec[34] = new Vector()
//evec[34].scanf(spikefile)
//vs0_2_VecStim[0].pp.play(evec[34])
//pplist.append(vs0_2_VecStim[0].pp)
//spikefile.close()
//
//spikefile.ropen("placetheta_36.dat")	//repeat for each additional theta cell input...
//evec[35] = new Vector()
//evec[35].scanf(spikefile)
//vs0_2_VecStim[0].pp.play(evec[35])
//pplist.append(vs0_2_VecStim[0].pp)
//spikefile.close()