Olfactory bulb microcircuits model with dual-layer inhibition (Gilra & Bhalla 2015)

 Download zip file 
Help downloading and running models
Accession:153574
A detailed network model of the dual-layer dendro-dendritic inhibitory microcircuits in the rat olfactory bulb comprising compartmental mitral, granule and PG cells developed by Aditya Gilra, Upinder S. Bhalla (2015). All cell morphologies and network connections are in NeuroML v1.8.0. PG and granule cell channels and synapses are also in NeuroML v1.8.0. Mitral cell channels and synapses are in native python.
Reference:
1 . Gilra A, Bhalla US (2015) Bulbar microcircuit model predicts connectivity and roles of interneurons in odor coding. PLoS One 10:e0098045 [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 mitral GLU cell; Olfactory bulb main interneuron periglomerular GABA cell; Olfactory bulb main interneuron granule MC GABA cell;
Channel(s): I A; I h; I K,Ca; I Sodium; I Calcium; I Potassium;
Gap Junctions:
Receptor(s): AMPA; NMDA; Gaba;
Gene(s):
Transmitter(s): Gaba; Glutamate;
Simulation Environment: Python; MOOSE/PyMOOSE;
Model Concept(s): Sensory processing; Sensory coding; Markov-type model; Olfaction;
Implementer(s): Bhalla, Upinder S [bhalla at ncbs.res.in]; Gilra, Aditya [aditya_gilra -at- yahoo -period- com];
Search NeuronDB for information about:  Olfactory bulb main mitral GLU cell; Olfactory bulb main interneuron periglomerular GABA cell; Olfactory bulb main interneuron granule MC GABA cell; AMPA; NMDA; Gaba; I A; I h; I K,Ca; I Sodium; I Calcium; I Potassium; Gaba; Glutamate;
# -*- coding: utf-8 -*-
# ALL SI UNITS
# milliMolar is same as mol/m^3


from pylab import *
rc('path',simplify= False) # To ensure matplotlib connects points at expense of speed.

# assuming sys.path already has '../networks'
from networkConstants import * # has SETTLETIME, PULSE_RUNTIME, pulsebins

from simset_odor_minimal import *

IN_VIVO = True

## set to 1 for 2MITS / 2 for 2GLOMS set during neuroml model generation by generate_neuroML.py
mitralsidekickidx = 2

## set varied to one of (None,'variedinh', 'mainrate', 'distance', 'gran_baseline')
## varied = None is for usual odor morphs and pulses, keep all mits.
## rest are for 2GLOMS:
##      'variedinh' is for changing delay etc to the odor response of glomB (variedinh sim)
##      others (mainrate, distance, gran_baseline) change conditions
##           under which kernel of glomB is calculated using whitenoise sim.
varied = None#'variedinh'#None#'mainrate'#'variedinh'
if varied == 'variedinh':
    ORNpathINHstr = "../firefiles/firefiles_variedinh/"
    ORNpathseedstr = "../firefiles/firefiles_variedinh/"
elif varied == 'mainrate':
    ORNpathINHstr = "../firefiles/firefiles_whitenoise/"
    ORNpathseedstr = "../firefiles/firefiles_whitenoise/"
granfilebase = "../firefiles/firefiles_baseline/firetimes_gran_baseline"

## for sinusoid inputs and related odor_sins.py, etc. only
LAT_SINS = True # whether sinusoids are given laterally or directly
SIN_MAIN_CONSTRATE = 3.0 # Hz # constant rate to give to central glom, with sin at lateral.

SIMDT = 5e-5 # seconds
## Correction factor for event-based vs graded synchans
## In event-based case, activation = weight/simdt
## while in graded case activation is used directly.
## Further, due to every sim point in graded case acting like an event,
## moose gives a convolved Gk which is much larger
## (say 1000 times) than the event based one.
## So I should correct for simdt and the activation weighted multiple events at every simdt.
#synchan_activation_correction = 1/SIMDT / 1000 # for SIMDT=1e-5
synchan_activation_correction = 1/SIMDT / 250 # for SIMDT=5e-5

PLOTDT = 5e-5 # seconds
## add SETTLETIME from stimuliConstants.py to the REALRUNTIME to get the simulation RUNTIME
REALRUNTIME = 1.0 # seconds # 2 respiration cycles

VOLTAGE_CLAMP = False

NUMBINS = 10
###### Somehow mpiexec doesn't like number of processes > 1000 and 
## gives errors somewhere in the middle of the run while trying to send to the boss,
## after which boss decides the below:
## rank 0 in job 35  gulabjamun.ncbs.res.in_56625 caused collective abort of all ranks
############ So ensure that NUMAVG+1 < 1000
####### For a network rather than isolated mitral cell, even 500 processes make the cluster hang.
##### Has worked only for 32 processes, didn't test inbetween yet.
##### Basically memory overflow problems - use less memory by using less data tables

## If unmodeled odor-responsive mitrals connect to same granule as their sister modelled mitrals,
## provide extra excitation to granule from modeled sister mitral
## as compensation for unmodelled sister odor-responsive mitrals, if CLUB_MITRALS=True.
## If CLUB_MITRALS=False, provide extra generic background to ALL granules during odor.
CLUB_MITRALS = False#True
## Only two mitrals for STA/whitenoise
## i.e. varied == 'mainrate'|'distance'|'gran_baseline'
if varied is None or varied == 'variedinh': ONLY_TWO_MITS = False
else: ONLY_TWO_MITS = True

ODOR_GIVEN = True