Olfactory bulb network model of gamma oscillations (Bathellier et al. 2006; Lagier et al. 2007)

 Download zip file 
Help downloading and running models
This model implements a network of 100 mitral cells connected with asynchronous inhibitory "synapses" that is meant to reproduce the GABAergic transmission of ensembles of connected granule cells. For appropriate parameters of this special synapse the model generates gamma oscillations with properties very similar to what is observed in olfactory bulb slices (See Bathellier et al. 2006, Lagier et al. 2007). Mitral cells are modeled as single compartment neurons with a small number of different voltage gated channels. Parameters were tuned to reproduce the fast subthreshold oscillation of the membrane potential observed experimentally (see Desmaisons et al. 1999).
1 . Bathellier B, Lagier S, Faure P, Lledo PM (2006) Circuit properties generating gamma oscillations in a network model of the olfactory bulb. J Neurophysiol 95:2678-91 [PubMed]
2 . Lagier S, Panzanelli P, Russo RE, Nissant A, Bathellier B, Sassoè-Pognetto M, Fritschy JM, Lledo PM (2007) GABAergic inhibition at dendrodendritic synapses tunes gamma oscillations in the olfactory bulb. Proc Natl Acad Sci U S A 104:7259-64 [PubMed]
3 . Bathellier B, Lagier S, Faure P, Lledo PM (2006) Corrigendum for Bathellier et al., J Neurophysiol 95 (4) 2678-2691. J Neurophysiol 95:3961-3962
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;
Channel(s): I Na,p; I Na,t; I A; I K;
Gap Junctions:
Receptor(s): GabaA;
Simulation Environment: C or C++ program;
Model Concept(s): Oscillations; Delay; Olfaction;
Search NeuronDB for information about:  Olfactory bulb main mitral GLU cell; GabaA; I Na,p; I Na,t; I A; I K;

	Cylinder.h													JJS 8/29/95
		part of CONICAL, the Computational Neuroscience Class Library
	A Cylinder is a Compartment which has a, well, cylindrical shape.  This
	assumption allows you to specify the compartment's properties in terms
	of its dimensions, its specific membrane resistance and capacitance,
	and specific axial (cytoplasmic) resistance.  The absolute capacitance
	and conductance figures needed by the Compartment will be automatically
	Membrane values here are the *specific* values, independent of cell
	dimensions.  Thus the cell dimensions can be changed without changing
	membrane properties.
	Cylinder is an entirely inline class -- all its code is contained
	within this header file.  Cylinder.cxx contains only the initializers
	for the class variables (defRm, defCm, defRa, and defE).

		Compartment		-- base class


#ifndef CYLINDER_H
#define CYLINDER_H

#include "CmprtmntRk4.h"

#ifndef Pi
#define Pi 3.141592653589793

class Cylinder : public Compartment

	// static (class) variables defining default values for electrical properties:
	static real defRm;	// specific membrane resistance (ohm m^2)
	static real defCm;	// specific membrane capacitance (farad/m^2)
	static real defRa;	// specific axial resistance (ohm m)
	static real defE;	// resting membrane potential (volt)
  	Cylinder( void )							// default constructor
  	: itsRadius(0.000001), itsLength(0.000001),
  	  itsRm(defRm), itsCm(defCm), itsRa(defRa), itsE(defE) {}

  	Cylinder( real pRadius, real pLength )		// constructor (given dimensions)
  	: itsRadius(pRadius), itsLength(pLength),
  	  itsRm(defRm), itsCm(defCm), itsRa(defRa), itsE(defE) {}
  	// inspectors (used because we can't have you changing values willy-nilly):
	virtual real GetRadius() { return itsRadius; }
	virtual real GetLength() { return itsLength; }
	virtual real GetArea() { return Pi * 2*itsRadius * itsLength; }
	virtual real GetRm() { return itsRm; }
	virtual real GetCm() { return itsCm; }
	virtual real GetRa() { return itsRa; }
	virtual real GetE() { return itsE; }
	// setters (American, not Irish):
	void SetRadius( real pRadius ) { itsRadius = pRadius; Derive(); }
	void SetLength( real pLength ) { itsLength = pLength; Derive(); }
	void SetRm( real pRm ) { itsRm = pRm; Derive(); }
	void SetCm( real pCm ) { itsCm = pCm; Derive(); }
	void SetRa( real pRa ) { itsRa = pRa; Derive(); }
	void SetE( real pE ) { itsE = pE; Derive(); }

	virtual void Derive( void )
		Gm = GetArea() / itsRm;
		EGm = itsE * Gm;
		negC = -( GetArea() * itsCm);
		Gi = Pi * itsRadius*itsRadius / (itsLength * itsRa );
	// member variables
	real itsRadius, itsLength, itsRm, itsCm, itsRa, itsE;