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
Citations  Citation Browser
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 med.unc.edu];
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 "TC.h"

TC::TC():INaK(V0), Ih_TC(V0), IT0_TC(V0), IT_TC(V0), ICaL_TC(V0), Ca(),
      Iahp2(V0, Cai0), Ican_TC(V0) {
        G_nal = 0.0;
	    G_kl  = 0.01;
        E_l   = -70;
        I_Stim = 0;

        INaK::G_Na = 90;
        INaK::G_K = 10;
        S_TC = 2.9e-4;  // 2.9e-4cm^2 !!!
void TC::init(double *y) {
       Iahp2::init(V0, Cai0);

        y[0] = V0;
	    y[1] = Cai0;
        y[2] = IT_TC::m0;
        y[3] = IT_TC::h0;
        y[4] = Ih_TC::m0;
        y[5] = INaK::m0;
        y[6] = INaK::h0;
        y[7] = INaK::n0;
        y[8] = Iahp2::m0;
        y[9] = IT0_TC::m0;
        y[10] = IT0_TC::h0;
        y[11] = Ican_TC::m0;
        y[12] = ICaL_TC::m0;
        y[13] = ICaL_TC::h0;
        // y[8] = IA_TC::m0;
        // y[9] = IA_TC::h0;
        // y[10] = INaP_TC::m0;
        // y[11] = IKs_TC::m0;
        // y[12] = IKs_TC::h0;

double TC::Cai0 = 5e-5;  // in mM or 50 nM
// double TC::G_l = 0.01;    //0.05; //0.01;/// mS/cm^2
double TC::V0 = -65;    // -70 !!!

void TC::calc(double x, double *y, double *f){
    IT_TC::calc(y[2], y[3], f[2], f[3], y[0], y[1], x);
    Ih_TC::calc(y[4], f[4], y[0]);
    INaK::calc(y[5], y[6], y[7], f[5], f[6], f[7], y[0], x);
    Iahp2::calc(y[8], f[8], y[1], y[0]);
    IT0_TC::calc(y[9], y[10], f[9], f[10], y[0], y[1], x);
    Ican_TC::calc(y[11], f[11], y[1], y[0]);
    ICaL_TC::calc(y[12], y[13], f[12], f[13], y[0], y[1], x);
    Ca::calc(y[1], f[1], iT, iT0, iCaL, x);

    //   IA_TC::calc(y[8], y[9], f[8], f[9], y[0], x);
    //   INaP_TC::calc(y[10], f[10], y[0]);
    //   IKs_TC::calc(y[11], y[12], f[11],f[12], y[0]);

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

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