Normal ripples, abnormal ripples, and fast ripples in a hippocampal model (Fink et al. 2015)

 Download zip file 
Help downloading and running models
Accession:182134
"...We use a computational model of hippocampus to investigate possible network mechanisms underpinning normal ripples, pathological ripples, and fast ripples. Our results unify several prior findings regarding HFO mechanisms, and also make several new predictions regarding abnormal HFOs. We show that HFOs are generic, emergent phenomena whose characteristics reflect a wide range of connectivity and network input. Although produced by different mechanisms, both normal and abnormal HFOs generate similar ripple frequencies, underscoring that peak frequency is unable to distinguish the two. Abnormal ripples are generic phenomena that arise when input to pyramidal cells overcomes network inhibition, resulting in high-frequency, uncoordinated firing. In addition, fast ripples transiently and sporadically arise from the precise conditions that produce abnormal ripples. Lastly, we show that such abnormal conditions do not require any specific network structure to produce coherent HFOs, as even completely asynchronous activity is capable of producing abnormal ripples and fast ripples in this manner. These results provide a generic, network-based explanation for the link between pathological ripples and fast ripples, and a unifying description for the entire spectrum from normal ripples to pathological fast ripples."
Reference:
1 . Fink CG, Gliske S, Catoni N, Stacey WC (2015) Network Mechanisms Generating Abnormal and Normal Hippocampal High-Frequency Oscillations: A Computational Analysis. eNeuro [PubMed]
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 CA1 basket cell;
Channel(s): I Na,t; I A; I K; I h;
Gap Junctions: Gap junctions;
Receptor(s): GabaA; NMDA; Glutamate;
Gene(s):
Transmitter(s):
Simulation Environment: NEURON;
Model Concept(s): Oscillations; Epilepsy;
Implementer(s): Fink, Christian G. [cgfink at owu.edu]; Gliske, Stephen [sgliske at umich.edu]; Stacey, William [wstacey at med.umich.edu];
Search NeuronDB for information about:  Hippocampus CA1 pyramidal GLU cell; GabaA; NMDA; Glutamate; I Na,t; I A; I K; I h;
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//
// NOTICE OF COPYRIGHT AND OWNERSHIP OF SOFTWARE
//
// Copyright 2007, The University Of Pennsylvania
// 	School of Engineering & Applied Science.
//   All rights reserved.
//   For research use only; commercial use prohibited.
//   Distribution without permission of Maciej T. Lazarewicz not permitted.
//   mlazarew@seas.upenn.edu
//
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%



begintemplate IApp

public set, get, getloc, set_random, getConv, setValue, set_random_play

objref  iapp, iappR, loc, rR, rC, rD




// =================================================================================================
//
// init()
//
// ================================================================================================= 
proc init() {

    loc = new SectionRef()
	loc.sec iappR = new IClamp(0.5)
    loc.sec iapp  = new IClamp(0.5)
}




// =================================================================================================
//
// set()
//
// ================================================================================================= 
proc set() {
    //print "SET"
    if (numarg()==1 || numarg()==2) {
    
        iapp.dur = 1e9        
        iapp.del = 0

        if (numarg()==2) iapp.del = $2

        loc.sec iapp.amp = $1 * area(0.5) * 1e-5
    
    } else {
        
        print "USAGE: set( i (uA/cm2) )"
        
    }
}




// =================================================================================================
//
// getConv()
//
// ================================================================================================= 
func getConv() { local c

    loc.sec  c = area(0.5) * 1e-5 
    return c
}




// ========================================================================
//
// setValue( i [nA], { del [ms]} )
//
// ========================================================================
proc setValue() {
    //print "SETVALUE"
    if (numarg()==1 || numarg()==2) {
    
        iapp.dur = 1e9        
        iapp.del = 0

        if (numarg()==2) iapp.del = $2

        loc.sec iapp.amp = $1
    
    } else {
        
        print "USAGE: set( i (nA) )"
        
    }
}



// =================================================================================================
//
// set_random_play(mean, sd, isUnitsPerCm2, gid)
//
// ================================================================================================= 
proc set_random_play() {local mean, sd
   
   		mean          = $1
   		sd            = $2
   		isUnitsPerCm2 = $3
   		
   		//loc.sec print secname(), " mean=", mean, " sd=", sd, "UNITS:", isUnitsPerCm2
   		
   		if (isUnitsPerCm2) {
   		// conversion from uA/cm2 to nA
   			loc.sec mean = 1e-5 * mean * area(0.5)
 			loc.sec	sd   = 1e-5 * sd   * area(0.5)
 			
   			//loc.sec print secname(), " mena=", mean, " sd=", sd 
   		}else{
   		// otherwise mean and sd are in pA, and need to be converted to nA
   			mean = 1e-3 * mean
   			sd   = 1e-3 * sd
   			//loc.sec print secname(), " mean=", mean, " sd=", sd 
   		}
        
        rD       = new Random((startsw()+$4)%10000)
        
        iappR.del     = 0 //rD.uniform(0, 750) //###changed to 0 7/8/8
        iappR.dur     = 1e9
        
        //loc.sec print secname(), iappR.del
        
        rR = new Random((startsw()*$4)%10000)
        rR.normal(mean, sd*sd)
        rR.play(&iappR.amp)
}




// =================================================================================================
//
// set_random()
//
// ================================================================================================= 
proc set_random() {
   
        rC       = new Random((startsw()+$1)%10000)
        iapp.dur = rC.uniform(0, 500)      
        iapp.del = 0
        loc.sec iapp.amp = rC.uniform(-5, 5) * area(0.5) * 1e-5
        //print "amp: ", iappR.amp, secname(), $1
}




// =================================================================================================
//
// getloc()
//
// ================================================================================================= 
proc getloc() {
    
    loc.sec print secname() 
}




// =================================================================================================
//
// get()
//
// ================================================================================================= 
proc get() {
    loc.sec printf("iapp = %g (nA), loc= %s\n", iapp.amp, secname())
}

endtemplate IApp

Loading data, please wait...