Network recruitment to coherent oscillations in a hippocampal model (Stacey et al. 2011)

 Download zip file   Auto-launch 
Help downloading and running models
Accession:135903
"... Here we demonstrate, via a detailed computational model, a mechanism whereby physiological noise and coupling initiate oscillations and then recruit neighboring tissue, in a manner well described by a combination of Stochastic Resonance and Coherence Resonance. We develop a novel statistical method to quantify recruitment using several measures of network synchrony. This measurement demonstrates that oscillations spread via preexisting network connections such as interneuronal connections, recurrent synapses, and gap junctions, provided that neighboring cells also receive sufficient inputs in the form of random synaptic noise. ..."
Reference:
1 . Stacey WC, Krieger A, Litt B (2011) Network recruitment to coherent oscillations in a hippocampal computer model. J Neurophysiol 105:1464-81 [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
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%



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