3D olfactory bulb: operators (Migliore et al, 2015)

 Download zip file   Auto-launch 
Help downloading and running models
Accession:168591
"... Using a 3D model of mitral and granule cell interactions supported by experimental findings, combined with a matrix-based representation of glomerular operations, we identify the mechanisms for forming one or more glomerular units in response to a given odor, how and to what extent the glomerular units interfere or interact with each other during learning, their computational role within the olfactory bulb microcircuit, and how their actions can be formalized into a theoretical framework in which the olfactory bulb can be considered to contain "odor operators" unique to each individual. ..."
Reference:
1 . Migliore M, Cavarretta F, Marasco A, Tulumello E, Hines ML, Shepherd GM (2015) Synaptic clusters function as odor operators in the olfactory bulb. Proc Natl Acad Sci U S A 112:8499-504 [PubMed]
Model Information (Click on a link to find other models with that property)
Model Type: Realistic Network;
Brain Region(s)/Organism:
Cell Type(s): Olfactory bulb main mitral GLU cell; Olfactory bulb main interneuron granule MC GABA cell;
Channel(s): I Na,t; I A; I K;
Gap Junctions:
Receptor(s): AMPA; NMDA; Gaba;
Gene(s):
Transmitter(s): Gaba; Glutamate;
Simulation Environment: NEURON; Python;
Model Concept(s): Activity Patterns; Dendritic Action Potentials; Active Dendrites; Synaptic Plasticity; Action Potentials; Synaptic Integration; Unsupervised Learning; Sensory processing; Olfaction;
Implementer(s): Migliore, Michele [Michele.Migliore at Yale.edu]; Cavarretta, Francesco [francescocavarretta at hotmail.it];
Search NeuronDB for information about:  Olfactory bulb main mitral GLU cell; Olfactory bulb main interneuron granule MC GABA cell; AMPA; NMDA; Gaba; I Na,t; I A; I K; Gaba; Glutamate;
/
figure1eBulb3D
readme.html
ampanmda.mod *
distrt.mod *
fi.mod *
fi_stdp.mod *
kamt.mod *
kdrmt.mod *
naxn.mod *
ThreshDetect.mod *
.hg_archival.txt
all2all.py *
balance.py *
bindict.py
binsave.py
binspikes.py
BulbSurf.py
catfiles.sh
colors.py *
common.py
complexity.py *
custom_params.py *
customsim.py
destroy_model.py *
determine_connections.py
distribute.py *
falsegloms.txt
fixnseg.hoc *
g37e1i002.py
gidfunc.py *
Glom.py *
granule.hoc *
granules.py
grow.py
input-odors.txt *
loadbalutil.py *
lpt.py *
m2g_connections.py
mayasyn.py
mgrs.py
misc.py
mitral.hoc *
mkdict.py
mkmitral.py
modeldata.py *
multisplit_distrib.py *
net_mitral_centric.py
odordisp.py *
odors.py *
odorstim.py
params.py
parrun.py
realgloms.txt *
realSoma.py *
runsim.py
spike2file.hoc *
split.py *
util.py *
vrecord.py
weightsave.py *
                            
from colors import palette as nrncolors
try:
    from enthought.traits.ui.api import Handler
    from enthought.traits.ui.api import UIInfo
except:
    from traitsui.api import Handler
    from traitsui.api import UIInfo
class OdorHandler(Handler):
    
    def __init__(self, fig, bulb, glomval):
        from copy import copy
        self.__glomval = copy(glomval)
        self.__fig = fig; self.__bulb = bulb

        # create method for every odor
        code = "def _show%g(self, info): self.show(%g)"
        for i in range(len(self.__bulb.real_h)):
            x = code % (i, i)
            compcode = {}
            exec x.strip() in compcode
            name = '_show%g' % i
            setattr(self.__class__, name, compcode[name])
            
    # clean the glomerulus
    def clean(self):
        for i in range(len(self.__bulb.real_h)):
            self.__bulb.real_h[i].property.color = (1., 0., 0.)
        self.__fig.scene.render()


    def _clean(self, info): self.clean()
    def _setview(self, info): self.setview()

    # set best view for the camera
    def setview(self):
        # set the camera
        self.__fig.scene.camera.position = [ -294.68175837,  2301.60733878,  5760.60463821 ]
        self.__fig.scene.camera.focal_point = [  972.90044282,  1081.82497137,   -90.96137608 ]
        self.__fig.scene.camera.view_angle = 30.
        self.__fig.scene.camera.view_up = [ 0.04971769,  0.97984323, -0.19348226 ]
        self.__fig.scene.render()
        
    # color gloms
    def show(self, i):
        for j, x in enumerate(self.__glomval[i]):
            self.__bulb.real_h[j].property.color = nrncolors[x]
        self.__fig.scene.render()

def OdorsInput(fname):
    odorlbl = []; glomval = []
    f = open(fname, 'r')

    minval = 100.; maxval = -1.

    line = f.readline()
    while line:
        token = line.split()

        # labels
        lbl = token[0].replace('_', ' ')
        odorlbl.append(lbl)

        # glom values
        vals = []
        for i in range(1, len(token)):
            vals.append(float(token[i]))
        _min = min(vals)
        _max = max(vals)
        if _min < minval: minval = _min
        if _max > maxval: maxval = _max
        glomval.append(vals)
        
        line = f.readline()
    f.close()


    # normalization for a best visualization of colors
    for i in range(len(glomval)):
        for j in range(len(glomval[i])):
            glomval[i][j] -= minval
            glomval[i][j] /= (maxval - minval)
            glomval[i][j] = int(glomval[i][j] * (len(nrncolors) - 1))
    return odorlbl, glomval

def initOdorsDisp(fname, fig, bulb):
    odorlbl, glomval = OdorsInput(fname)
    try:
        from enthought.traits.ui.menu import Action, MenuBar, Menu, Separator # create odor list
    except:
        from traitsui.menu import Action, MenuBar, Menu, Separator # create odor list


    menu = Menu(name='Odors') 
    for i, name in enumerate(odorlbl): menu.append(Action(name=name, action='_show%g' % i))
    #menu.append(Separator())
    menu1 = Menu(name='View') 
    menu1.append(Action(name='Set View as Vinci\'s', action='_setview'))
    menu1.append(Action(name='Clean gloms', action='_clean'))
    return MenuBar(menu, menu1), OdorHandler(fig, bulb, glomval)


Loading data, please wait...