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
"[...] 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. [...]"
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;
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]; Hines, Michael [Michael.Hines at];
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;
Eta.txt *
granules.txt *
Kod.txt *
Nod.txt *
odstim2.txt *
pad.txt *
realgloms.txt *
from struct import unpack
from bulbdef import gid_is_mitral as ismitral, gid_is_mtufted as ismtufted

class BulbDict:
  def __init__(self, filename):
    self.gid_dict = {}
    self.mgid_dict = {}
    self.mtgid_dict = {}
    self.ggid_dict = {}
    with open(filename, 'rb') as fi:
      rec =
      while rec:
        rsgid, cgid, isec, xc, ggid, xg = unpack('>LLHfLf', rec)
        self.gid_dict.update({ rsgid:(cgid, isec, xc, ggid, 0, xg) })

        # by GC 
        if ggid not in self.ggid_dict:
          g2rs_set = set()
          self.ggid_dict[ggid] = g2rs_set
          g2rs_set = self.ggid_dict[ggid]

        # by M/T cells
        if ismitral(cgid):
          cell_map = self.mgid_dict
        elif ismtufted(cgid):
          cell_map = self.mtgid_dict

        if cgid not in cell_map:
          rs_set = set()
          g_set = set()
          cell_map[cgid] = (rs_set, g_set)
          rs_set, g_set = cell_map[cgid]

        rec =

    print self.mgid_dict.keys()
    print self.mtgid_dict.keys()
  def __is_rs_of(self, gid, gidfunc):
      ci = self.gid_dict[gid]
    except KeyError:
      return False

    return gidfunc(ci[0])
  def is_mc_rs(self, gid):
    return self.__is_rs_of(gid, ismitral)

  def is_mtc_rs(self, gid):
    return self.__is_rs_of(gid, ismtufted)

  def is_gc_rs(self, gid):
    return gid % 2 == 0 and (gid+1) in self.gid_dict

  def mgid2ggid(self, gid):
    return self.mgid_dict[gid][1]
  def mtgid2ggid(self, gid):
    return self.mtgid_dict[gid][1]

  def mgid2mgrsid(self, mgid):
    return self.mgid_dict[mgid][0]

  def mtgid2mgrsid(self, mgid):
    return self.mtgid_dict[mgid][0]

  def ggid2mgrsid(self, ggid):
    return self.ggid_dict[ggid]
  def query(self, gid):
    if gid % 2 != 0:
      gid += 1
    return self.gid_dict[gid]

if __name__ == '__main__':
  dic = BulbDict('column-control.dic')
  #for gid in dic.gid_dict.keys():
  #  if gid % 2 == 0:
  #    print gid
  # return an information tuple
  # it contains (mitral id, secden index, secden section, granule id, 0, priden section)
  #print dic.query(dic.gid_dict.keys()[0])

  # gc soma gid connected to a mitral cell
  #print dic.gid2ggid(185)

  # all gid connected to a mitral cell
  #print dic.gid2mgrsid(185)