High frequency oscillations in a hippocampal computational model (Stacey et al. 2009)

 Download zip file   Auto-launch 
Help downloading and running models
Accession:135902
"... Using a physiological computer model of hippocampus, we investigate random synaptic activity (noise) as a potential initiator of HFOs (high-frequency oscillations). We explore parameters necessary to produce these oscillations and quantify the response using the tools of stochastic resonance (SR) and coherence resonance (CR). ... Our results show that, under normal coupling conditions, synaptic noise was able to produce gamma (30–100 Hz) frequency oscillations. Synaptic noise generated HFOs in the ripple range (100–200 Hz) when the network had parameters similar to pathological findings in epilepsy: increased gap junctions or recurrent synaptic connections, loss of inhibitory interneurons such as basket cells, and increased synaptic noise. ... We propose that increased synaptic noise and physiological coupling mechanisms are sufficient to generate gamma oscillations and that pathologic changes in noise and coupling similar to those in epilepsy can produce abnormal ripples."
Reference:
1 . Stacey WC, Lazarewicz MT, Litt B (2009) Synaptic noise and physiological coupling generate high-frequency oscillations in a hippocampal computational model. J Neurophysiol 102:2342-57 [PubMed]
Citations  Citation Browser
Model Information (Click on a link to find other models with that property)
Model Type: Realistic Network;
Brain Region(s)/Organism: Hippocampus;
Cell Type(s): Hippocampus CA1 pyramidal GLU cell; Hippocampus CA3 pyramidal GLU cell; Hippocampus CA1 interneuron oriens alveus GABA cell; Hippocampus CA1 basket cell;
Channel(s): I Na,t; I A; I K; I h;
Gap Junctions: Gap junctions;
Receptor(s): GabaA; AMPA; NMDA;
Gene(s):
Transmitter(s):
Simulation Environment: NEURON;
Model Concept(s): Oscillations;
Implementer(s): Lazarewicz, Maciej [mlazarew at gmu.edu]; Stacey, William [wstacey at med.umich.edu];
Search NeuronDB for information about:  Hippocampus CA1 pyramidal GLU cell; Hippocampus CA3 pyramidal GLU cell; Hippocampus CA1 interneuron oriens alveus GABA cell; GabaA; AMPA; NMDA; I Na,t; I A; I K; I h;
{load_file("min.hoc")}
{load_file("getGID.hoc")}

// =================================================================================================
//
// writeConn(preSyn, postSyn, synID, fo)
//
// =================================================================================================
proc writeConn() {local i, postSyn, synID localobj preSyn, fo

	preSyn  = $o1
	postSyn = $2
	synID   = $3
	fo      = $o4
	
	for i=0, preSyn.size()-1 fo.printf("%d, %d, %d, %s, %s, %s\n", preSyn.x[i], postSyn, synID, $s5, $s6, $s7)
}
	
	
	
	
// =================================================================================================
//
// generatePreConn(gids, N, preOut, noSelf), gids is a Vector
//
//		gids    - vector, contains the range of avaiable GIDs, and it is an output
//		N       - scalar, number of presynaptic GIDs to be selected
//		isSelf  - scalar, if >0 then do not allow self wiring, and must be the GID of the postsynaptic cell
//
// 	Generates the subset of N gids (vector), and returns it in the vector preOut
//  No repetitions
// =================================================================================================
proc generatePreConn() {local i, ii, N, isSelf, Npre localobj rand, gids, preOut, preInd

	gids   = $o1
	N      = $2
	isSelf = $3
	preOut = $o4
	preOut.resize(0)
	
	Npre   = gids.size()

	// Generate the vector of possible presynaptic neurons 
	preInd = new Vector(Npre)
	preInd.indgen()
		
	// Do not connect to itself
	if (isSelf>0) preInd = gids.c.indvwhere("!=", isSelf)
	
	if (preInd.size()<N) {
	
		print "Number of GIDs too small comparing with N"
		return
	}
	
    rand = new Random(startsw())
 	
	// Choose N presynaptic gids
    for i=0, N-1 {
				
		// Choose the presynaptic cell indexed by "i"
		ind = rand.discunif(0, preInd.size()-1)
		ii = preInd.x[ind]
		preInd.remove(ind)
		preOut.append( gids.x[ii] )	
    }
}



load_file("../parameters/synapses.hoc")
	
// =================================================================================================
//
// generateConn(NN)
// 	
//		synParam - list of synapses for particular population of neurons(pyr, bask, OLM). Elements 
//                 are objects SynParam defined in synapses.hoc
//		postGIDs - a vector of GIDs of the postsynaptic cells
//		N        - N is a vector of neuronal pools sizes 
//
// =================================================================================================
proc generateConn() { localobj fo, preGIDsList, NN

	NN = $o1
	
	fo = new File()
	fo.wopen("conn.dat")
	
	preGIDsList = new List()
	
	getGID( preGIDsList, NN)
	
	generateConn2(synParamPyr,  preGIDsList.object(0), NN, fo, preGIDsList, "Pyr")
	generateConn2(synParamBask, preGIDsList.object(1), NN, fo, preGIDsList, "Bask")
	generateConn2(synParamOLM,  preGIDsList.object(2), NN, fo, preGIDsList, "OLM")
		
	fo.close()
}




// =================================================================================================
//
// generateConn(synParam, postGIDs, N, fo, preGIDsList)
// 	
//		synParam - list of synapses for particular population of neurons(pyr, bask, OLM). Elements 
//                 are objects SynParam defined in synapses.hoc
//		postGIDs - a vector of GIDs of the postsynaptic cells
//		N        - N is a vector of neuronal pools sizes 
//
// =================================================================================================
proc generateConn2() { local i, j localobj synParam, postGIDs, N, preGIDsList, preGIDs, fo, preGIDsList

	synParam    = $o1
	postGIDs    = $o2
	N           = $o3
	fo          = $o4
	preGIDsList = $o5
	preGIDs     = new Vector()
		
	for i=0, synParam.count()-1 {
		
		for j=0, postGIDs.size()-1 {
		
			generatePreConn(preGIDsList.object(0), synParam.object(i).Npre[0], postGIDs.x[j], preGIDs)			
			writeConn(preGIDs, postGIDs.x[j], synParam.object(i).synID, fo, "Pyr", $s6, synParam.object(i).name)
			
			generatePreConn(preGIDsList.object(1), synParam.object(i).Npre[1], postGIDs.x[j], preGIDs)
			writeConn(preGIDs, postGIDs.x[j], synParam.object(i).synID, fo, "Bask", $s6, synParam.object(i).name)
			
			generatePreConn(preGIDsList.object(2), synParam.object(i).Npre[2], postGIDs.x[j], preGIDs)						
			writeConn(preGIDs, postGIDs.x[j], synParam.object(i).synID, fo, "OLM", $s6, synParam.object(i).name)
		}
	}
}