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
data0
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
                            
// Mitral cell model template

begintemplate Mitral
public soma, prim, dend, tuft, all
public AMPA, GABAA, spiketimes, dendspike, tuftspike, spikecount, spikecount2, spikecount3
create soma, prim, dend, tuft
//objref real
objref AMPA, GABAA, spikecount, spikecount2, spikecount3
objref spiketimes, dendspike, tuftspike


proc celldef() {
	topol()
	subsets()
	geom()
	biophys($1)  
//	geom_nseg()
}

proc topol() { 
	connect dend(0), soma(1)
	connect prim(1), soma(0)
    connect tuft(1), prim(0)	
}


// create subsets 
objref all
proc subsets() {
        all = new SectionList()		
		soma all.append				
		prim all.append
		dend all.append
		tuft all.append
}

// The following parameters are adapted from Shen et al. JNP, 1999
proc geom() {    
	soma {  
		L    = 25
		diam = 20 
		nseg = 1
	}
	
	prim {  
		L    = 370
		diam = 3.5 	
		nseg = 5   
	}	
	
	dend {  
		L    = 500
		diam = 3.4   // 3.4 !!!
		nseg = 7   
	}	
	
	tuft {
		L    = 20  
		diam = 0.5 
		nseg = 1	    
	}

    forall {
		//nseg = 1
		//nseg = int((L/(0.1*lambda_f(100))+0.9)/2)*2 + 1
    }	
}

func lambda_f() {
  return  1e5*sqrt(diam/(4*PI*$1*Ra*cm))
}


proc biophys() { local El, RM, AMPAtau, AMPArev, GABAAtau GABAArev

RM	=  30e3  	 // ohm.cm2   Shen et al. JNP, 1999
El  = -60	// -60	!!! 
ENa =  45        
Ek  = -80      

AMPAtau	 =  10	 
AMPArev	 =   0	 
GABAAtau =  18	 
GABAArev = -70

shell_depth = 1   
spike_threshold = -10

//==========================================================

gNa_soma  = 50e-3   
gNa_dend  = 30e-3   
gNa_prim  = 20e-3   
gNa_tuft  = 20e-3   
    sh_Na = -3    // -3
	
gKdr_soma = 30e-3   
gKdr_dend = 20e-3  
gKdr_prim = 10e-3   
gKdr_tuft = 10e-3   
	
gA_soma   = 10e-3  
gA_dend   = 0e-3
gA_prim   = 0e-3
gA_tuft   = 0e-3
	Sha_A = 9.9       
	Shi_A = 5.7      

ScaleNP = 1.0   // 1.0/1.5 !!! (1.4/1.5/1.6)
ScaleKS = 1.0   // 1.0/1.3 !!! (1.2/1.2/1.3)

gNaP_soma = ScaleNP*0.2e-3  // 0.2 
gNaP_dend = ScaleNP*0.02e-3 // 0.02   
gNaP_prim = ScaleNP*0.10e-3 // 0.1   
gNaP_tuft = ScaleNP*0.10e-3 // 0.1   

gKs_soma  = ScaleKS*42e-3   // 42
gKs_dend  = ScaleKS*8e-3    // 8
gKs_prim  = ScaleKS*18e-3   // 18
gKs_tuft  = ScaleKS*18e-3   // 18	
   tau_KS = 10     // Default: 10  !!!
   kh_KS  = 1.5    // Default: 1.5 
	
gCa_soma  = 0.4e-3   
gCa_dend  = 0.05e-3  
gCa_prim  = 0.2e-3   
gCa_tuft  = 0.2e-3

gKCa_soma = 5e-3   // 5
	
spiketimes = new Vector()
dendspike  = new Vector()
tuftspike  = new Vector()

forsec all {
  Ra = 70     // ohm*cm; Shen et al. JNP, 1999  
  cm = 1.2    // uF/cm^2; Shen et al. JNP, 1999
}  


soma {
    insert pas
      e_pas  = El		
      g_pas  = 1/RM	
	
  
    insert Inic
	enic_Inic = 0
	gbar_Inic = 0.0e-3  // 0.1


    insert nafast
      gnabar_nafast  = gNa_soma  
	  sh_nafast = sh_Na
    insert kfasttab
    gkbar_kfasttab = gKdr_soma  
 
    insert kamt
      gbar_kamt = gA_soma      
	  sha_kamt  = Sha_A 
	  shi_kamt  = Shi_A	

    insert IKs
      gbar_IKs  = gKs_soma
      tauM_IKs  = tau_KS
      kh_IKs    = kh_KS

    insert INaP
      gbar_INaP = gNaP_soma 
    insert ICa
      gcabar_ICa = gCa_soma  
    insert Ikca
      gkbar_Ikca =  gKCa_soma 
    insert cad     
      depth_cad  = shell_depth
   
    spikecount = new APCount(0.5)
    spikecount.thresh = spike_threshold
    spikecount.record(spiketimes)
}

dend {
    insert pas
      e_pas 	= El
      g_pas		= 1/RM
    insert nafast
      gnabar_nafast	 = gNa_dend   
	  sh_nafast = sh_Na
    insert kfasttab
      gkbar_kfasttab = gKdr_dend  
   
    insert kamt
      gbar_kamt   = gA_dend    
	  sha_kamt  = Sha_A 
	  shi_kamt  = Shi_A	
	  
    insert IKs
      gbar_IKs  = gKs_dend
      tauM_IKs  = tau_KS
      kh_IKs    = kh_KS 

    insert INaP
      gbar_INaP   = gNaP_dend  
   
    insert ICa
      gcabar_ICa  = gCa_dend	 
    insert cad   
	  depth_cad = shell_depth  	  
   
    GABAA = new ExpSyn(0.5)
    GABAA.tau 	= GABAAtau
    GABAA.e 	= GABAArev
	
    spikecount2 = new APCount(1.0)
    spikecount2.thresh = spike_threshold
    spikecount2.record(dendspike)
}

prim {
    insert pas
      e_pas 	= El
      g_pas		= 1/RM
    insert nafast
       gnabar_nafast = gNa_prim   
	   sh_nafast = sh_Na 
    insert kfasttab
    gkbar_kfasttab	= gKdr_prim  
	
    insert kamt
      gbar_kamt = gA_prim    
	  sha_kamt  = Sha_A 
	  shi_kamt  = Shi_A	
	  
    insert IKs
      gbar_IKs  = gKs_prim  
      tauM_IKs  = tau_KS
      kh_IKs    = kh_KS

    insert INaP
      gbar_INaP   = gNaP_prim  
   
    insert ICa
      gcabar_ICa  = gCa_prim
    insert cad   
	  depth_cad = shell_depth     

}
	 

tuft  {
    insert pas
      e_pas 	= El
      g_pas		= 1/RM
  
    insert Inic
	enic_Inic = 3.2
	gbar_Inic = $1  
  
	insert nafast
       gnabar_nafast = gNa_tuft   
	   sh_nafast = sh_Na 
    insert kfasttab
    gkbar_kfasttab	= gKdr_tuft  
	
    insert kamt
      gbar_kamt = gA_tuft         
	  sha_kamt  = Sha_A 
	  shi_kamt  = Shi_A	
	  
    insert IKs
      gbar_IKs  = gKs_tuft
      tauM_IKs  = tau_KS
      kh_IKs    = kh_KS

    insert INaP
      gbar_INaP   = gNaP_tuft  
   
    insert ICa
      gcabar_ICa  = gCa_tuft
	  
    insert cad   
	  depth_cad = shell_depth    
	  
	AMPA     = new ExpSyn(0.5)
    AMPA.tau = AMPAtau
    AMPA.e 	 = AMPArev  
	
    spikecount3 = new APCount(0.5)
    spikecount3.thresh = spike_threshold
    spikecount3.record(tuftspike)	
}


forall if (ismembrane("na_ion")) {
	ena = ENa	
  }

forall if (ismembrane("k_ion")) {
	ek  = Ek	
  }

  
  
}


proc init() {
 celldef($1)
}


endtemplate Mitral