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. [...]"
References:
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]
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
vis
bulbdef.py
bulbdict.py
bulbgui.py
bulbvis.py
cellreader.py
cellwriter.py
cfg27.py
dummysyns.txt
Eta.txt *
firing.py
geodist.py
geodist.txt
ggid2type.txt
gidfunc.py
glomdist.py
granules.py
granules.txt
graphmeat.py
growdef.py *
ipsc.py
ispkdata.py
Kod.txt *
misc.py
Nod.txt *
odors.py
odstim2.txt *
pad.txt *
realgloms.txt *
spikes.py
spikesreader.py
spk2gd.py
spk2weight.py
spkgraph.py
winflag.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 = fi.read(22)
      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
        else:
          g2rs_set = self.ggid_dict[ggid]
        g2rs_set.add(rsgid-1)
       

        # 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)
        else:
          rs_set, g_set = cell_map[cgid]

        rs_set.add(rsgid)
        g_set.add(ggid)
        
        
        rec = fi.read(22)

    print self.mgid_dict.keys()
    print self.mtgid_dict.keys()
    
  def __is_rs_of(self, gid, gidfunc):
    try:
      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)
  

Loading data, please wait...