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;
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//
//  NOTICE OF COPYRIGHT AND OWNERSHIP OF SOFTWARE
//
// Copyright 2010, The University Of Michigan
// 	
//   All rights reserved.
//   For research use only; commercial use prohibited.
//   No Distribution without permission of William Stacey
//   wstacey@umich.edu
//
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

//This is for the basket cells based on the paper
// 
// Tort, A. B., Rotstein, H. G., Dugladze, T., et al. (2007). On the formation of gamma-coherent cell assemblies by oriens lacunosum-moleculare interneurons in the hippocampus. Proc Natl Acad Sci U S A,.
//   

{load_file("syn.tem")}
{load_file("gap.tem")}
{load_file("iapp.tem")}

begintemplate Bwb

external cvode

// PUBLIC VARIABLES
public x, y, z

// PUBLIC OBJECTS
public soma, spiketimes, idvec, synS, gapS, iappS, synlist, recordT, voltageRecS 

//PUBLIC METHODS
public position, getlocoS, connect2target, recordVoltage, is_art, addSynS, getTotalArea
public setScatteredVoltages, writeVoltage

create soma    

objref iappS, synS, gapS, locS, voltageRecS, recordT
objref spiketimes, idvec, nil, synlist

strdef cmd

// =================================================================================================
//
// init(mean, sd, isUnitsPerCm2, gid)
//
// =================================================================================================
proc init() {
    
    createCell()
        
    access soma
    
    synlist = new List()
    locS    = new SectionRef()
    iappS   = new IApp()
    synS    = new SynObj()
    gapS    = new GapObj()
    
    spiketimes  = new Vector()
    idvec       = new Vector()
    voltageRecS = new Vector()
    recordT     = new Vector()
    
    iappS.set_random_play($2, $3, $4, $1)
}






// =================================================================================================
//
// recordVoltage()
//
// =================================================================================================
proc recordVoltage() {
		
		//print "Started RECORDING VOLTAGE at Bask"	
		soma  cvode.record(&v(0.5), voltageRecS, recordT )
		//soma  cvode.record(&iappS.iappR.amp, voltageRecS, recordT )
}





// =================================================================================================
//
// writeVoltage(gid)
//
// =================================================================================================
proc writeVoltage() { local i localobj fo, m

	//print "SIZE:", t, " ", recordT.size()

	m = new Matrix(recordT.size(), 6)

	m.setcol(0, recordT)
	m.setcol(1, voltageRecS)

	fo = new File()
	
	sprint(cmd, "data/%d.dat", $1)
	
	{fo.wopen(cmd)}
	
	{m.fprint(0, fo, "%6.3lf ")}
	
	{fo.close()}
}




// ========================================================================
//
// getTotalArea()
//
// ========================================================================
func getTotalArea() {
	
	return totalArea
}




// =================================================================================================
//
// connect2target()
//
// =================================================================================================
proc connect2target() { //$o1 target point process, $o2 returned NetCon
  
  soma $o2 = new NetCon(&v(0.5), $o1, 0 ,0, 0)
  
  if (numarg()==2) synS.addNetCon($o2)
}



// =================================================================================================
//
// createCell()
//
// =================================================================================================
proc createCell() {

    totalArea = 100 // um2

    soma {
        nseg  = 1
        cm    = 1      // uF/cm2
        diam  = sqrt(totalArea) // um
        L     =  diam/PI  // um
    
        insert pas
            e_pas = -65     // mV
            g_pas = 0.1e-3  // S/cm2 
  
        insert Nafbwb
        insert Kdrbwb
    }
}




// ========================================================================
//
// addSynS( tau1 (ms), tau2 (ms), Erev (mV), synapseName, synLoc )
//
// ========================================================================
func addSynS() {
    
    synlist.append(synS.synList.object( synS.addSyn( $1, $2, $3, $s4, $5)  ) )
	return synlist.count()-1
}




// =================================================================================================
//
// setScatteredVoltages(low, high)
//
// =================================================================================================
proc setScatteredVoltages() { localobj rand

  rand = new Random(startsw())
  rand.uniform($1,$2)

  forall v = rand.repick()
}




// =================================================================================================
//
// getlocoS()
//
// =================================================================================================
obfunc getlocoS() { return locS }






// =================================================================================================
//
// position()
//
// =================================================================================================
proc position() { x=$1 y=$2 z=$3 }




// =================================================================================================
//
// is_art()
//
// =================================================================================================
func is_art() { return 0}




endtemplate Bwb