Parallel odor processing by mitral and middle tufted cells in the OB (Cavarretta et al 2016, 2018)

 Download zip file   Auto-launch 
Help downloading and running models
Accession:240116
"[...] experimental findings suggest that MC and mTC may encode parallel and complementary odor representations. We have analyzed the functional roles of these pathways by using a morphologically and physiologically realistic three-dimensional model to explore the MC and mTC microcircuits in the glomerular layer and deeper plexiform layers. [...]"
Reference:
1 . Cavarretta F, Burton SD, Igarashi KM, Shepherd GM, Hines ML, Migliore M (2018) Parallel odor processing by mitral and middle tufted cells in the olfactory bulb. Sci Rep 8:7625 [PubMed]
2 . Cavarretta F, Marasco A, Hines ML, Shepherd GM, Migliore M (2016) Glomerular and Mitral-Granule Cell Microcircuits Coordinate Temporal and Spatial Information Processing in the Olfactory Bulb. Front Comput Neurosci 10:67 [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: Olfactory bulb;
Cell Type(s): Olfactory bulb main tufted middle GLU cell; Olfactory bulb main interneuron granule MC GABA cell; Olfactory bulb main interneuron granule TC GABA cell; Olfactory bulb (accessory) mitral cell; Olfactory bulb main tufted cell external; Olfactory bulb short axon cell;
Channel(s): I A; I Na,t; I_Ks; I K;
Gap Junctions: Gap junctions;
Receptor(s): AMPA; GabaA; NMDA;
Gene(s):
Transmitter(s): Glutamate; Gaba;
Simulation Environment: NEURON;
Model Concept(s): Action Potentials; Action Potential Initiation; Active Dendrites; Long-term Synaptic Plasticity; Synaptic Integration; Synchronization; Pattern Recognition; Spatio-temporal Activity Patterns; Temporal Pattern Generation; Sensory coding; Sensory processing; Olfaction;
Implementer(s): Cavarretta, Francesco [francescocavarretta at hotmail.it]; Hines, Michael [Michael.Hines at Yale.edu];
Search NeuronDB for information about:  Olfactory bulb main interneuron granule MC GABA cell; Olfactory bulb main tufted middle GLU cell; Olfactory bulb main interneuron granule TC GABA cell; GabaA; AMPA; NMDA; I Na,t; I A; I K; I_Ks; Gaba; Glutamate;
/
modeldb-bulb3d
sim
ampanmda.mod
distrt.mod *
fi.mod
fi_stdp.mod *
gap.mod
Gfluct.mod
kamt.mod
kdrmt.mod
ks.mod
naxn.mod
orn.mod
ThreshDetect.mod *
all.py
all2all.py *
assembly.py
balance.py *
bindict.py
binsave.py
binspikes.py
blanes.hoc
blanes.py
blanes_exc_conn.txt
blanes6.dic
bulb3dtest.py
cancel.py
catfiles.sh
cellreader.py
cellwriter.py
cfg27.py
common.py
complexity.py *
convertdic.py
destroy_model.py
determine_connections.py
distribute.py *
dsac.py
Eta.txt *
fillgloms.py
fixnseg.hoc *
g_conn_stats.py
gapjunc.py
gen_weights.py
geodist.py
geodist.txt
getmitral.py
gidfunc.py
GJ.py
gj_nrn.hoc
Glom.py *
granule.hoc
granules.py
graphmeat.py
grow.py
growdef.py *
growout.py
job
Kod.txt *
lateral_connections.py
loadbalutil.py *
lpt.py *
mcgrow.py
MCrealSoma.py *
mgrs.py
misc.py
mitral.hoc
mkassembly.py
mkmitral.py
modeldata.py
mtgrow.py
MTrealSoma.py
MTrealSoma2.py
mtufted.hoc
multisplit_distrib.py
net_mitral_centric.py
Nod.txt *
odors.py
odorstim.py
odstim2.txt *
pad.txt *
params.py
parrun.py
pathdist.py
realgloms.txt *
runsim.py
spike2file.hoc *
spk2weight.py
split.py
subsetsim.py
test_complexity.py
txt2bin.py
util.py *
vrecord.py
weightsave.py
                            
begintemplate Mitral


// ls - long secondary dendrites 

public soma, priden, secden, tuftden, hillock, initialseg, node, myelin
public all, secdens, tufts, dendritic, somatic, somden, ornsyn, ornrng, vcinit
public  nsecden, ntuft, nmyelin

nmyelin=5
create soma, priden, secden[2], tuftden[1], hillock, initialseg, node[nmyelin], myelin[nmyelin]



objref dendritic, somatic, somden, synodor, external_syn, all, secdens, tufts, axonal
objref ornsyn, ornrng
objref vc

proc vcinit() {
  priden vc = new VClamp(1)
  vc.dur[0] = 10
  vc.dur[1] = 0.1
  vc.dur[2] = 0
  vc.amp[0] = -55
  vc.amp[1] = 100
  vc.amp[2] = -55 
}

proc init() {

	ornsyn = new List()
	ornsyn.remove_all()
	ornrng = new List()
	ornrng.remove_all()

	nsecden = 2
	ntuft = 1
	subsets()
	topol()
	geometry()
	segments()
        
	memb()
}

proc createsec() {
	nsecden = $1
	ntuft = $2
        nmyelin=5  
  
	ornsyn.remove_all()
	ornrng.remove_all()

	create soma, priden, secden[nsecden], tuftden[ntuft], hillock, initialseg, node[nmyelin], myelin[nmyelin]
}

proc subsets() {
	all = new SectionList()
	forall all.append()
	
	secdens = new SectionList()
	forsec "secden" secdens.append()

	tufts = new SectionList()
	forsec "tuftden" tufts.append()

	dendritic = new SectionList()
	forsec "priden" dendritic.append()
	forsec secdens dendritic.append()
	forsec tufts dendritic.append()

	somatic = new SectionList()
	soma somatic.append

	axonal = new SectionList()
	hillock axonal.append
	initialseg axonal.append
        forsec "node" axonal.append
//	somden = new SectionList()
//	forsec somatic somden.append()
//	forsec dendritic somden.append()
}



proc segments() {local i, dx

	soma.nseg = 1
	priden {
		if(n3d() > 1) nseg = n3d() - 1
	}
	forsec tufts {
		if(n3d() > 1) nseg = n3d() - 1
	}
	forsec secdens {
		if(n3d() > 1) nseg = n3d() - 1
	}
	initialseg.nseg = 3
	hillock.nseg = 3
}

proc geometry() {local i
	soma { L = 25  diam = 20 }
	priden { L = 300  diam = 3 }
//	forsec tufts {rallbranch=20 L=300  diam(0:1)=.4:.4 }
	forsec tufts {L=300  diam(0:1)=.4:.4 }
	forsec secdens { L=1000  diam=2 }
	initialseg{ L=30  diam=1.5}
	hillock { L=5  diam(0:1) = soma.diam(0) : initialseg.diam(0) }
        forsec "node" { L=1 diam=1 }
        forsec "myelin" { L=1000  diam=1.5 }                 
	//define_shape()
}
	
  proc topol() {local i  localobj s
	if (numarg() > 0) if ($1 == 0) { // do not connect secondary dendrites
	}else{ // connect all secondary dendrites to soma (no branching)
		for i =0, nsecden-1 {
			connect secden[i](0), soma(.5)
		}
	}
	connect priden(0), soma(1)
	for i =0, ntuft-1 {
		connect tuftden[i](0), priden(1)
	}

	connect hillock(0), soma(0)
	connect initialseg(0), hillock(1)

              
        connect myelin[0](0), initialseg(1)
        for i = 0, nmyelin-1 {
          connect node[i](0), myelin[i](1)
          if (i == nmyelin-1) break
          connect myelin[i+1](0), node[i](1)
        }
  }

  proc memb() { local tau, cap, Vrest
    Vrest = -55
    tau = 20180
    cap = 1
                
    sh = 5
                
    forall {
      //insert ks ek=-90 gksbar_ks=0.0045 tp_ks=6 a0q_ks=800 kp_ks=2 vhalfp_ks=-35-sh vhalfq_ks=-50-sh tvh_ks=-50-sh
      insert kamt gbar_kamt=0.004
      insert nax gbar_nax=0.04 sh_nax=15-sh
      insert kdrmt gbar_kdrmt=0.001
      insert pas g_pas=1/(tau/cap) Ra=150 cm=cap e_pas=Vrest
    }
                
    forsec "initialseg" {
      //gksbar_ks=0
      gbar_kamt=0.06
      gbar_nax=2.5
      g_pas=1/(tau/cap/3)
    }
    
    forsec "node" {
      //gksbar_ks=0
      gbar_kamt=0.06
      gbar_nax=2.5
      g_pas=1/(tau/cap/3)
    }
                
    forsec "myelin" {
      //gksbar_ks=0
      gbar_kamt=0
      gbar_nax=0
      gbar_kdrmt=0
      g_pas=1/(tau/cap/3*10/3)
      cm=cap/100
    }
    forall {
	ek=-80
        ena=40
    }
  }



	



  proc setup_orns() { localobj synodor, synrng
	for i=0,ntuft-1 tuftden[i] {
		synodor = new orn(0.5)
                synrng = new Random()
                synrng.Random123($1, $2+i)
                synrng.normal(0, 1)
                synodor.noiseFromRandom(synrng)
		ornsyn.append(synodor)
                ornrng.append(synrng)
	}
  }

endtemplate Mitral