2D model of olfactory bulb gamma oscillations (Li and Cleland 2017)

 Download zip file   Auto-launch 
Help downloading and running models
Accession:232097
This is a biophysical model of the olfactory bulb (OB) that contains three types of neurons: mitral cells, granule cells and periglomerular cells. The model is used to study the cellular and synaptic mechanisms of OB gamma oscillations. We concluded that OB gamma oscillations can be best modeled by the coupled oscillator architecture termed pyramidal resonance inhibition network gamma (PRING).
Reference:
1 . Li G, Cleland TA (2017) A coupled-oscillator model of olfactory bulb gamma oscillations. PLoS Comput Biol 13:e1005760 [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:
Cell Type(s): Olfactory bulb main mitral GLU cell; Olfactory bulb main interneuron granule MC GABA cell; Olfactory bulb main interneuron periglomerular GABA cell;
Channel(s):
Gap Junctions:
Receptor(s): AMPA; NMDA; GabaA;
Gene(s):
Transmitter(s):
Simulation Environment: NEURON;
Model Concept(s): Olfaction;
Implementer(s): Li, Guoshi [guoshi_li at med.unc.edu];
Search NeuronDB for information about:  Olfactory bulb main mitral GLU cell; Olfactory bulb main interneuron periglomerular GABA cell; Olfactory bulb main interneuron granule MC GABA cell; GabaA; AMPA; NMDA;
/
OBGAMMA
celldata
connection
data0
input
README
cadecay.mod *
cadecay2.mod *
Caint.mod *
Can.mod *
CaPN.mod *
CaT.mod *
GradeAMPA.mod *
GradeGABA.mod *
GradNMDA.mod *
hpg.mod *
kAmt.mod *
KCa.mod *
KDRmt.mod *
kfasttab.mod *
kM.mod *
KS.mod
kslowtab.mod *
LCa.mod *
nafast.mod *
NaP.mod *
Naxn.mod *
Nicotin.mod *
nmdanet.mod *
OdorInput.mod *
SineInput.mod
Background.hoc
Cal_Synch.hoc
Connect.hoc
Figure.hoc
GC_def.hoc
GC_save.hoc *
GC_Stim.hoc
Input.hoc
mathslib.hoc
MC_def.hoc
MC_save.hoc
MC_Stim.hoc
mosinit.hoc
OBNet.hoc
Parameter.hoc
PG_def.hoc
PG_save.hoc *
PG_Stim.hoc
SaveData.hoc
tabchannels.dat *
tabchannels.hoc
                            
load_file("nrngui.hoc")
xopen("$(NEURONHOME)/lib/hoc/noload.hoc") // standard run tools

xopen("tabchannels.hoc")
load_file("MC_def.hoc")         

tstop   = 6000
celsius = 35 

dt = 0.01
steps_per_ms = 5  // DT = 0.2 ms
secondorder  = 2  // 2!!!

gnic_tuft = 0.0e-3  // mS/cm2

objref mit
mit = new Mitral(gnic_tuft)

load_file("MC_save.hoc") 
nrncontrolmenu()

// Current injection
T1  = 1500     // 
Dur = 4000
Ic1 = 0.2   //

// Noisy current injection
F0  = 0.0   // 
F1  = 0.0   // 
   

 objref Stim1, Stim2
 mit.soma Stim1 = new IClamp(0.5)
 Stim1.del = T1
 Stim1.dur = Dur		
 Stim1.amp = Ic1  
 
 mit.tuft Stim2 = new OdorInput(0.5)
 Stim2.del  = 1000
 Stim2.dur  = Dur		
 Stim2.torn = 3000
 Stim2.r    = 100
 Stim2.f0   = F0
 Stim2.f1   = F1 
 
 
// Exponential synapse
objref syn1, syn2
mit.tuft syn1 = new ExpSyn(0.5)
syn1.tau =  10
syn1.e   =  0   // -70

// Alpha synapses   
mit.dend syn2 = new AlphaSynapse(0.5)     // Tuft  
//mit.tuft syn2 = new AlphaSynapse(0.0)   // Tuft
syn2.onset = 3362    // 3255 for 0.2 nA
syn2.tau   = 3
syn2.gmax  = 0.0    // Dend: 0.003/0.01; Tuft:0.005/0.02
syn2.e     = -80	 
	 
	 
// Artifical Spiking Input
objref nc
nc = new NetStim(.5)
nc.number   = 100
nc.start    = 1000
nc.interval = 100
nc.noise    = 0

objref ns
ns = new NetCon(nc, syn1) // mit.AMPA
ns.threshold = 0
ns.delay     = 0
ns.weight    = 0e-3       // 30 uS   
 

proc advance() {
fadvance()
 
}

proc run() {
  running_ = 1
  stdinit()
  continuerun(tstop)
}

 
objref mitrate, spk
spk = new Vector()
mitrate = new Vector()

T = (tstop-T1)/1000

proc firing_rate() { local i, n
    n = 0
	if (mit.spiketimes.size() > 0) {
      spk = mit.spiketimes
	  ind = spk.indwhere(">", T1)
	  if (ind != -1) {
	   //print ind
	   n = spk.size()-ind
	 }
    }
	mitrate.append(n/T)
	mitrate.printf()
} 
  
objref g1, g2, g3, g4, g5, g6, g7, g8, g9
proc fig()  {


g3 = new Graph(0)
addplot(g3, 0)
g3.size(0,tstop,-70,60)
g3.view(0,-80,tstop,140, 0,150,400,150)
g3.addvar("Tuft.V", "mit.tuft.v(0.5)", 1, 1, 0.9, 0.9, 2)  

g4 = new Graph(0)
addplot(g4, 0)
g4.size(0,tstop,-70,60)
g4.view(0,-80,tstop,140, 0,420,400,150)
g4.addvar("Prim.V", "mit.prim.v(0.5)", 5, 1, 0.9, 0.9, 2)  

g1 = new Graph(0)
addplot(g1, 0)
g1.size(0,tstop,-70,60)
g1.view(0,-80,tstop,140, 0,680,400,150)
g1.addvar("Soma.V", "mit.soma.v(0.5)", 3, 1, 0.9, 0.9, 2)  

g2 = new Graph(0)
addplot(g2, 0)
g2.size(0,tstop,-70,60)
g2.view(0,-80,tstop,140, 0,920,400,150)
g2.addvar("Dend.V", "mit.dend.v(1.0)", 2, 1, 0.9, 0.9, 2)  //1: black; 2: red; 3: blue

/*
g9 = new Graph(0)
addplot(g9, 0)
g9.size(0,tstop,0,1)
g9.view(0,0,tstop,1, 450,200,400,150)
g9.addvar("Conductance", "syn2.i", 2, 1, 0.9, 0.9, 2)  //1: black; 2: red; 3: blue
*/



g6 = new Graph(0)
addplot(g6, 0)
g6.size(0,tstop,0,1)
g6.view(0,0,tstop,1, 0,150,400,150)
g6.addvar("Ks Activation", "mit.soma.m_IKs", 2, 1, 0.9, 0.9, 2)  
g6.addvar("Ks Inactivation", "mit.soma.h_IKs", 1, 1, 0.9, 0.9, 2)

/*
g5 = new Graph(0)
addplot(g5, 0)
g5.size(0,tstop,-2,2)
g5.view(0,-2,tstop,4, 450,200,400,150)
g5.addvar("Noisy input", "Stim2.i", 2, 1, 0.9, 0.9, 2)  //1: black; 2: red; 3: blue


g7 = new Graph(0)
addplot(g7, 0)
g7.size(0,tstop,0,0.0001)
g7.view(0,0,tstop,0.0001, 0,420,400,150)
g7.addvar("Cai", "mit.soma.cai", 2, 1, 0.9, 0.9, 2)


g8 = new Graph(0)
addplot(g8, 0)
g8.size(0,tstop,-0.0005,0.0005)
g8.view(0,-0.005,tstop,0.01, 450,200,400,150)
g8.addvar("IKCa", "mit.soma.ik_IKCa", 1, 1, 0.9, 0.9, 2)  //1: black; 2: red; 3: blue
*/

}


fig()
run()
//firing_rate()
save_data()