ModelDB is moving. Check out our new site at The corresponding page is

A unified thalamic model of multiple distinct oscillations (Li, Henriquez and Fröhlich 2017)

 Download zip file 
Help downloading and running models
We present a unified model of the thalamus that is capable of independently generating multiple distinct oscillations (delta, spindle, alpha and gamma oscillations) under different levels of acetylcholine (ACh) and norepinephrine (NE) modulation corresponding to different physiological conditions (deep sleep, light sleep, relaxed wakefulness and attention). The model also shows that entrainment of thalamic oscillations is state-dependent.
1 . Li G, Henriquez C, Fröhlich F (2017) Unified Thalamic Model Generates Multiple Distinct Oscillations with State-dependent Entrainment by Stimulation PLOS Computational Biology 13(10):e1005797
Model Information (Click on a link to find other models with that property)
Model Type: Realistic Network;
Brain Region(s)/Organism: Thalamus;
Cell Type(s): Thalamus geniculate nucleus/lateral principal GLU cell; Thalamus reticular nucleus GABA cell; Thalamus lateral geniculate nucleus interneuron;
Channel(s): I Na,t; I K; I h; I L high threshold; I T low threshold; I_AHP; I CAN; I K,leak;
Gap Junctions: Gap junctions;
Receptor(s): AMPA; NMDA; GabaA;
Transmitter(s): Acetylcholine; Norephinephrine;
Simulation Environment: C or C++ program;
Model Concept(s): Sleep; Activity Patterns; Gamma oscillations; Oscillations; Brain Rhythms;
Implementer(s): Li, Guoshi [guoshi_li at];
Search NeuronDB for information about:  Thalamus geniculate nucleus/lateral principal GLU cell; Thalamus reticular nucleus GABA cell; GabaA; AMPA; NMDA; I Na,t; I L high threshold; I T low threshold; I K; I K,leak; I h; I CAN; I_AHP; Acetylcholine; Norephinephrine;
#include <stdio.h>
#include "Constants.h"
#include "src/INaK.h"
#include "src/Iahp2.h"
#include "src/Ican_TC.h"

//#include "src/ICa.h"
#include "RE.h"

RE::RE():IT_RE(V0), INaK(V0), Ca_RE(), Iahp2(V0, Cai0), Ican_TC(V0) {
        E_l = -70;
        G_l = 0.05;
        G_kl = 0.0;
        S_RE = 1.43e-4;
        I_Stim = 0;

void RE::init(double *y) {
       Iahp2::init(V0, Cai0);

        y[0] = V0;
	    y[1] = Cai0;
        y[2] = IT_RE::m0;
        y[3] = IT_RE::h0;
        y[4] = INaK::m0;
        y[5] = INaK::h0;
        y[6] = INaK::n0;
        y[7] = Iahp2::m0;
        y[8] = Ican_TC::m0;

double RE::V0 = -70, RE::Cai0 = 5e-5;

void RE::calc(double x, double *y, double *f){
    IT_RE::calc(y[2], y[3], f[2], f[3], y[0], y[1], x);
    INaK::calc(y[4], y[5], y[6], f[4], f[5], f[6], y[0], x);
    Ca_RE::calc(y[1], f[1], iT, x);
    Iahp2::calc(y[7], f[7], y[1], y[0]);
    Ican_TC::calc(y[8], f[8], y[1], y[0]);

    i_Total = S_RE*1e3*(-G_l*(y[0] - E_l) -G_kl*(y[0] - EK) -iNa -iK -iT -iAHP -iCAN) + I_Stim;
    f[0] = i_Total/(1*S_RE*1e3);

void RE::setStim(double I_Stim_Param){
  I_Stim = I_Stim_Param; 

Loading data, please wait...