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
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
                            
import bulbdef as params
import misc
from math import pi 

# 3d coords to ellipsoidal
def p2e(p, axis=params.bulb_axis):
  from copy import copy  
  p = copy(list(p))
  for i in range(3):
    p[i] -= params.bulb_center[i]
    p[i] /= axis[i] / 2.0
  phi, theta = misc.Spherical.to(p)[1:]
  phi %= 2*pi
  return phi, theta

def e2p(phi, theta, axis=params.bulb_axis):
  p = list(misc.Spherical.xyz(1, phi, theta))
  for i in range(3):
    p[i] *= axis[i]/2.0
    p[i] += params.bulb_center[i]
  return p

def geodist(q, p):
  phiq, thetaq = p2e(q)
  phip, thetap = p2e(p)

  if phiq < phip:
    def swap(a, b):
      return b, a
  
    phip, phiq = swap(phip, phiq)
    thetap, thetaq = swap(thetap, thetaq)

  if phiq > phip and (phiq - phip) % (2 * pi) > pi:
    phiq = -(2 * pi - phiq)

  def pt(t):
    phi = (phiq-phip)*t+phip
    theta = (thetaq-thetap)*t+thetap
    return e2p(phi, theta)

  t = 0.0
  
  dt = (1.0/360*2*pi)/max([abs(phiq-phip), abs(thetaq-thetap)])
  tot = 0.0
  a = pt(0)
  seq = [a]
  while t < 1:
    t += dt
    b = pt(t)
    seq.append(b)
    tot += misc.distance(a, b)
    a = b
  return tot, seq

def glomdist(i, j):
  try:
    gd = adj[(i, j)]
  except KeyError:
    gl1 = list(params.glom_coord[i])
    gl2 = list(params.glom_coord[j])
    gd = geodist(gl1, gl2)[0]
  return gd

adj = {}

try:
  fi = open('geodist.txt', 'r')
  line = fi.readline()
  while line:
    tk = line.split()
    i = int(tk[0])
    j = int(tk[1])
    gd = float(tk[2])
    adj[(i, j)] = gd
    line = fi.readline()
  fi.close()
except IOError:
  ng = params.Ngloms
  fo = open('geodist.txt', 'w')
  for i in range(ng-1):
    for j in range(i+1, ng):
      print 'distance between', i, j, '...'
      p = params.glom_coord[i]
      q = params.glom_coord[j]
      d = geodist(p, q)[0]
      adj[(i, j)] = adj[(j, i)] = d
      fo.write('%d %d %g\n' % (i, j, d))
      fo.write('%d %d %g\n' % (j, i, d))
      print '\t...done'
  fo.close()
  print 'all distance are been calculated'