A two-layer biophysical olfactory bulb model of cholinergic neuromodulation (Li and Cleland 2013)

 Download zip file   Auto-launch 
Help downloading and running models
Accession:149739
This is a two-layer biophysical olfactory bulb (OB) network model to study cholinergic neuromodulation. Simulations show that nicotinic receptor activation sharpens mitral cell receptive field, while muscarinic receptor activation enhances network synchrony and gamma oscillations. This general model suggests that the roles of nicotinic and muscarinic receptors in OB are both distinct and complementary to one another, together regulating the effects of ascending cholinergic inputs on olfactory bulb transformations.
Reference:
1 . Li G, Cleland TA (2013) A two-layer biophysical model of cholinergic neuromodulation in olfactory bulb. J Neurosci 33:3037-58 [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 periglomerular GABA cell; Olfactory bulb main interneuron granule MC GABA cell;
Channel(s): I Na,p; I L high threshold; I T low threshold; I A; I M; I h; I K,Ca; I CAN; I Sodium; I Calcium; I Potassium; I_Ks; I Cl, leak; I Ca,p;
Gap Junctions:
Receptor(s): Nicotinic; GabaA; Muscarinic; AMPA; NMDA;
Gene(s):
Transmitter(s): Acetylcholine;
Simulation Environment: NEURON; MATLAB;
Model Concept(s): Sensory processing; Sensory coding; Neuromodulation; 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; Nicotinic; GabaA; Muscarinic; AMPA; NMDA; I Na,p; I L high threshold; I T low threshold; I A; I M; I h; I K,Ca; I CAN; I Sodium; I Calcium; I Potassium; I_Ks; I Cl, leak; I Ca,p; Acetylcholine;
/
ACh_ModelDB
data
Input
Readme.txt
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 *
Background.hoc
Connect.hoc
GC_def.hoc
GC_save.hoc *
GC_Stim.hoc
Input.hoc
MC_def.hoc
MC_save.hoc
MC_Stim.hoc
mod_func.c
mosinit.hoc
nrniv.exe.stackdump
OB.hoc
Parameter.hoc
PG_def.hoc
PG_save.hoc *
PG_Stim.hoc
SaveData.hoc
tabchannels.dat *
tabchannels.hoc
                            
// Granule cell template

begintemplate Granule

public soma, dend, gemmshaft, gemmbody
public AMPAr, NMDAr,GABAAr,spiketimes, dendspike

create soma, dend, gemmshaft, gemmbody
objref AMPAr, NMDAr, GABAAr
objref spiketimes, dendspike, spikecount, dendcount

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

proc topol() { 
	connect dend(0), soma(1)
	connect gemmshaft(0), dend(1)
	connect gemmbody(0), gemmshaft(1)	
}

objref all, gcdendgemm

proc subsets() {
	all = new SectionList()
	soma all.append()
	dend all.append()
	forsec "gemm" all.append()
	
	gcdendgemm = new SectionList()
	forsec "dend" gcdendgemm.append()
	forsec "gemm" gcdendgemm.append()
}

proc geom() {
	soma { L = 8   diam  = 8 } 
	dend { L = 150 diam  = 1 } 
	gemmshaft { L=1 diam =1 }
	gemmbody  { L=1 diam =1 }
}

proc geom_nseg() { 
	forall {
	 //nseg = 1
	 // nseg = int((L/(0.1*lambda_f(100))+0.9)/2)*2 + 1
    }	
	soma { nseg = 1 }
	dend { nseg = 1 }    //3
	gemmshaft { nseg = 1 }
	gemmbody  { nseg = 1 }
}


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

proc biophys() { local AMPAtau, NMDAalpha, NMDAbeta, Erev, GABAAtau,GABAArev

    spiketimes = new Vector()
	dendspike  = new Vector()
	
	RM	= 30e3  	// ohm.cm2   
    EL 	= -60		
	
	ENA =  45
    EK  = -80	    
	ECA = 100
	
	NMDAalpha = 0.0163	
    NMDAbeta  = 0.00292	
    AMPAtau  = 5.5		
    Erev	 = 0		    
	GABAAtau = 8.3 		
    GABAArev = -70
	
	spike_threshold = -10
	
	//=================================
	
	gNa_Soma = 50e-3  
	gNa_Dend = 20e-3  
	   Sh_Na = 5        
	
	gKdr_Soma = 20e-3  
	gKdr_Dend =  5e-3  	
	
	gA_Soma = 20e-3   
	gA_Dend = 60e-3   
	  Sha_A =  -0     
	  Shi_A =  -20    
	  k_tauH  = 2.5  
	  sh_tauH = 0
	
	gM_Soma    = 0.5e-3   
	gM_Dend    = 0.0e-3    
	
	gKCa_Soma  = 0e-3     
	gKCa_Dend  = 0.5e-3   
	
	gCaT_Dend  = 0.1e-3    
	
	gCapn_Dend = 0.2e-3	 
	
	gcan_Dend  = 1.0e-3  
	
   // When the argument $1==0, mAChRs are not active
   // When the argument $1!=0, mAChRs are activated (blocking Im and IKca)   
	if ($1==0) {
	   gM_Soma    = 0.5e-3
	   gKCa_Dend  = 0.5e-3   
	} else {
	   gM_Soma    = 0.0e-3
	   gKCa_Dend  = 0.0e-3   
	}
		
	shell_depth = 0.2    
	
	forall {
     Ra = 80     // ohm*cm
     cm = 2.0    // uF/cm^2
    }  
	
	soma {
	insert pas 
		g_pas = 1/RM
		e_pas = EL
	
	insert nax
        gbar_nax  = gNa_Soma
        sh_nax  = Sh_Na	

	insert kdrmt
	    gbar_kdrmt = gKdr_Soma    
	insert kamt
        gbar_kamt = gA_Soma    // 
		sha_kamt  = Sha_A 
		shi_kamt  = Shi_A
		k_tauH_kamt = k_tauH
		sh_tauH_kamt = sh_tauH
    insert kM
        gkbar_kM  = gM_Soma    // 	
    
	insert Ikca
        gkbar_Ikca = gKCa_Soma
	
	insert cad2     
        depth_cad2  = shell_depth
	ena = ENA
	ek  = EK
	
	spikecount  = new APCount(0.5)
    spikecount.thresh = spike_threshold
    spikecount.record(spiketimes)
	
	}
	
	forsec gcdendgemm {
	insert pas 
		g_pas = 1/RM
		e_pas = EL

	insert nax
        gbar_nax = gNa_Dend	
		sh_nax  = Sh_Na

    insert kdrmt
	    gbar_kdrmt = gKdr_Dend   
	insert kamt
        gbar_kamt  = gA_Dend    // 
		sha_kamt = Sha_A 
		shi_kamt = Shi_A
		k_tauH_kamt = k_tauH
		sh_tauH_kamt = sh_tauH		
	insert kM
        gkbar_kM  = gM_Dend    // 
	
	insert Icat
	    gbar_Icat = gCaT_Dend 
	insert Icapn
        gbar_Icapn = gCapn_Dend	
	insert Ican
	    gbar_Ican = gcan_Dend 
	insert Ikca
        gkbar_Ikca = gKCa_Dend  	    
	
	insert cad2     
      depth_cad2  = shell_depth
	
	ena = ENA
	ek  = EK
	eca = ECA
  }	

  gemmbody{
	AMPAr = new ExpSyn(0.5)
    AMPAr.tau 	= AMPAtau
    AMPAr.e 	= Erev
    NMDAr = new NMDA(0.5)
    NMDAr.Alpha	= NMDAalpha
    NMDAr.Beta	= NMDAbeta
    NMDAr.e		= Erev
	
	GABAAr = new ExpSyn(0.5)
    GABAAr.tau 	= GABAAtau
    GABAAr.e 	= GABAArev
	
	dendcount = new APCount(0.5)
    dendcount.thresh = spike_threshold
    dendcount.record(dendspike)
	
  }
  	
}

//access soma
proc init() {
celldef($1)

}

endtemplate Granule