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 growdef import *
from struct  import unpack

class CellReader:
  
  def __init__(self, filename):
    self.__fi = open(filename, 'rb')
    
    self.__cell_offset = [None]*unpack('>I', self.__fi.read(4))[0]
    for i in range(len(self.__cell_offset)):
      self.__cell_offset[i] = unpack('>I', self.__fi.read(4))[0]
    
    dataoffset = self.__fi.tell()
    for i in range(len(self.__cell_offset)):
      self.__cell_offset[i] += dataoffset
      

      
      
  def close(self):
    self.__fi.close()

    

  def __readsections(self, sections):
    nsec = unpack('>H', self.__fi.read(2))[0]
    for isec in range(nsec):
      sec = Section()
      npt = unpack('>I', self.__fi.read(4))[0]
      for ipt in range(npt):
        sec.points.append(unpack('>ffff', self.__fi.read(16)))
      sections.append(sec)

    

  def __connect(self, cell):

    def get_section(sectype, isec):
      if sectype == 0:
        return cell.soma[isec]
      elif sectype == 1:
        return cell.apic[isec]
      elif sectype == 2:
        return cell.tuft[isec]
      elif sectype == 3:
        return cell.dend[isec]
      return None
        
    
    nconn = unpack('>I', self.__fi.read(4))[0]
    for i in range(nconn):
      sectype1 = unpack('>B', self.__fi.read(1))[0]
      isec1 = unpack('>H', self.__fi.read(2))[0]

      sectype2 = unpack('>B', self.__fi.read(1))[0]
      isec2 = unpack('>H', self.__fi.read(2))[0]

      sec1 = get_section(sectype1, isec1)
      sec2 = get_section(sectype2, isec2)

      sec1.parent = sec2
      sec2.children.append(sec1)
                       
    
                             
  def readcell(self, gid):
    cell = Neuron()
    self.__fi.seek(self.__cell_offset[gid])
    self.__readsections(cell.soma)
    self.__readsections(cell.apic)
    self.__readsections(cell.tuft)
    self.__readsections(cell.dend)
    self.__connect(cell)
    return cell
    

if __name__ == '__main__':
  cr = CellReader('../bulbvis/mccells.car')
  hist = [0]*int(1040/40)
  import misc
  for i in range(635, 1904):
    try:
      cell = cr.readcell(i)
      center = misc.centroid(cell.soma[0].points)
      for dnd in cell.dend:
        for p in dnd.points:
          d = misc.distance(p, center)
          hist[int(d/40)] += 1.
    except:
      break
  s = 0.
  for x in hist:
    s += x
  for i in range(len(hist)):
    hist[i] /= s
  with open('../sholl.txt', 'w') as fo:
    for i in range(len(hist)):
      fo.write('%d %g\n'%(i*40,hist[i]))
        

Loading data, please wait...