From 2708625e9d7f86e6ae62cbf43aca721d2edd8347 Mon Sep 17 00:00:00 2001 From: Schellenberger Date: Wed, 28 May 2014 15:00:55 +0200 Subject: [PATCH] Updated the parameters to show better behavior. --- Cortical_Column.h | 10 +++++----- Plots.m | 20 ++++++++++---------- TC.cpp | 2 +- Thalamic_Column.cpp | 32 ++++++-------------------------- Thalamic_Column.h | 33 +++++++++++++++------------------ saves.h | 4 ++-- 6 files changed, 39 insertions(+), 62 deletions(-) diff --git a/Cortical_Column.h b/Cortical_Column.h index 71c5a77..ca20ee6 100644 --- a/Cortical_Column.h +++ b/Cortical_Column.h @@ -32,8 +32,8 @@ #include "Thalamic_Column.h" #include "macros.h" using std::vector; -class Thalamic_Column; +class Thalamic_Column; /****************************************************************************************************/ /* Typedefs for RNG */ /****************************************************************************************************/ @@ -56,7 +56,7 @@ class Cortical_Column { Cortical_Column(double* Par, double* Con) :sigma_e (Par[0]), alpha_Na (Par[1]), tau_Na (Par[2]), g_KNa (Par[3]), - dphi (Par[3]), + dphi (Par[4]), N_te (Con[2]), N_ti (Con[3]) {set_RNG();} @@ -142,7 +142,7 @@ class Cortical_Column { /* parameters of the firing adaption */ const double alpha_Na = 2; /* Sodium influx per spike in mM ms */ - const double tau_Na = 1; /* Sodium time constant in ms */ + const double tau_Na = 1.2; /* Sodium time constant in ms */ const double R_pump = 0.09; /* Na-K pump constant in mM/ms */ const double Na_eq = 9.5; /* Na-eq concentration in mM */ @@ -183,8 +183,8 @@ class Cortical_Column { const double N_ei = 72; const double N_ie = 90; const double N_ii = 90; - const double N_te = 10; - const double N_ti = 10; + const double N_te = 0; + const double N_ti = 0; /* Pointer to thalamic column */ Thalamic_Column* Thalamus; diff --git a/Plots.m b/Plots.m index 8d36f70..db96d8f 100644 --- a/Plots.m +++ b/Plots.m @@ -17,10 +17,10 @@ function Plots(T) 1.33; % g_KNa 60E-3]; % dphi - Con = [0; % N_et - 0; % N_er - 0; % N_te - 0]; % N_ti + Connectivity= [2; % N_et + 2; % N_er + 5; % N_te + 5]; % N_ti % stimulation parameters % first number is the mode of stimulation @@ -29,16 +29,16 @@ function Plots(T) % 2 == phase dependend up state % 3 == phase dependend down state - var_stim = [ 0 % mode of stimulation - 100.0; % strength of the stimulus in Hz (spikes per second) - 100; % duration of the stimulus in ms - 8; % time between stimuli in s - 550]; % time until stimuli after min in ms + var_stim = [ 0; % mode of stimulation + 0; % strength of the stimulus in Hz (spikes per second) + 0; % duration of the stimulus in ms + 0; % time between stimuli in s + 0]; % time until stimuli after min in ms T = 30; % duration of the simulation end -[Ve, Vt] = TC(T, Input_N3, Con, var_stim); +[Ve, Vt] = TC(T, Input_N2, Connectivity, var_stim); L = max(size(Vt)); timeaxis = linspace(0,T,L); diff --git a/TC.cpp b/TC.cpp index 88254d8..0c85b1b 100644 --- a/TC.cpp +++ b/TC.cpp @@ -39,7 +39,7 @@ /****************************************************************************************************/ /* Fixed simulation settings */ /****************************************************************************************************/ -extern const int onset = 5; /* time until data is stored in s */ +extern const int onset = 20; /* time until data is stored in s */ extern const int res = 1E4; /* number of iteration steps per s */ extern const int red = res/100; /* number of iterations that is saved */ extern const double dt = 1E3/res; /* duration of a timestep in ms */ diff --git a/Thalamic_Column.cpp b/Thalamic_Column.cpp index 335f585..d26ce64 100644 --- a/Thalamic_Column.cpp +++ b/Thalamic_Column.cpp @@ -132,21 +132,7 @@ double Thalamic_Column::h_inf_T_r (int N) const{ return h; } -/* Activation time in TC population after Bazhenov 1998 */ -double Thalamic_Column::tau_m_T_t (int N) const{ - _SWITCH((Vt)) - double tau = (0.612 + 1 /(exp(-(var_Vt + 132) / 16.7) + exp((var_Vt + 16.8)/18.2)))/pow(3,1.2); - return tau; -} - -/* Activation time in RE population after Destexhe 1996 */ -double Thalamic_Column::tau_m_T_r (int N) const{ - _SWITCH((Vr)) - double tau = (1 + 0.33/( exp((var_Vr+27)/10.0) + exp(-(var_Vr+102)/15.0)))/pow(2.5, 1.2); - return tau; -} - -/* deactivation time in RE population after Destexhe 1996 */ +/* Deactivation time in RE population after Destexhe 1996 */ double Thalamic_Column::tau_h_T_t (int N) const{ _SWITCH((Vt)) double tau = (30.8 + (211.4 + exp((var_Vt+115.2)/5))/(1 + exp((var_Vt+86)/3.2)))/pow(3, 1.2); @@ -218,17 +204,15 @@ double Thalamic_Column::I_LK_r (int N) const{ /* T-type current of TC population */ double Thalamic_Column::I_T_t (int N) const{ - _SWITCH((Vt)(h_T_t)(m_T_t)) - double I = g_T_t * pow(var_m_T_t, 2) * var_h_T_t * (var_Vt - E_Ca); - /* double I = g_T_t * pow(m_inf_T_t(N), 2) * var_h_T_t * (var_Vt - E_Ca); */ + _SWITCH((Vt)(h_T_t)) + double I = g_T_t * pow(m_inf_T_t(N), 2) * var_h_T_t * (var_Vt - E_Ca); return I; } /* T-type current of RE population */ double Thalamic_Column::I_T_r (int N) const{ - _SWITCH((Vr)(h_T_r)(m_T_r)) - double I = g_T_r * pow(var_m_T_r, 2) * var_h_T_r * (var_Vr - E_Ca); - /* double I = g_T_r * pow(m_inf_T_r(N), 2) * var_h_T_r * (var_Vr - E_Ca); */ + _SWITCH((Vr)(h_T_r)) + double I = g_T_r * pow(m_inf_T_r(N), 2) * var_h_T_r * (var_Vr - E_Ca); return I; } @@ -265,13 +249,11 @@ void Thalamic_Column::set_RK (int N) { _SWITCH((Ca) (Phi_tt)(Phi_tr)(Phi_rt)(Phi_rr)(phi) (x_tt) (x_tr) (x_rt) (x_rr) (y) - (m_T_t) (m_T_r) (h_T_t) (h_T_r) + (h_T_t) (h_T_r) (m_h) (m_h2) (P_h)) Vt [N] = dt*(-(I_L_t(N) + I_et(N) + I_it(N))/tau_t - (I_LK_t(N) + I_T_t(N) + I_h(N))); Vr [N] = dt*(-(I_L_r(N) + I_er(N) + I_ir(N))/tau_r - (I_LK_r(N) + I_T_r(N))); Ca [N] = dt*(alpha_Ca * I_T_t(N) - (var_Ca - Ca_0)/tau_Ca); - m_T_t [N] = dt*(m_inf_T_t(N) - var_m_T_t)/tau_m_T_t(N); - m_T_r [N] = dt*(m_inf_T_r(N) - var_m_T_r)/tau_m_T_r(N); h_T_t [N] = dt*(h_inf_T_t(N) - var_h_T_t)/tau_h_T_t(N); h_T_r [N] = dt*(h_inf_T_r(N) - var_h_T_r)/tau_h_T_r(N); m_h [N] = dt*((m_inf_h(N) * (1 - var_m_h2) - var_m_h)/tau_m_h(N) - k3 * var_P_h * var_m_h + k4 * var_m_h2); @@ -311,8 +293,6 @@ void Thalamic_Column::add_RK(void) { x_rt [0] += (x_rt [1] + x_rt [2] * 2 + x_rt [3] * 2 + x_rt [4])/6; x_rr [0] += (x_rr [1] + x_rr [2] * 2 + x_rr [3] * 2 + x_rr [4])/6; y [0] += (y [1] + y [2] * 2 + y [3] * 2 + y [4])/6; - m_T_t [0] += (m_T_t [1] + m_T_t [2] * 2 + m_T_t [3] * 2 + m_T_t [4])/6; - m_T_r [0] += (m_T_r [1] + m_T_r [2] * 2 + m_T_r [3] * 2 + m_T_r [4])/6; h_T_t [0] += (h_T_t [1] + h_T_t [2] * 2 + h_T_t [3] * 2 + h_T_t [4])/6; h_T_r [0] += (h_T_r [1] + h_T_r [2] * 2 + h_T_r [3] * 2 + h_T_r [4])/6; m_h [0] += (m_h [1] + m_h [2] * 2 + m_h [3] * 2 + m_h [4])/6; diff --git a/Thalamic_Column.h b/Thalamic_Column.h index 8a7ae85..4d5f11e 100644 --- a/Thalamic_Column.h +++ b/Thalamic_Column.h @@ -67,7 +67,7 @@ class Thalamic_Column { void set_input (double I) {input = I;} /* Get axonal flux */ - double get_phi (int N) const {_SWITCH((phi)); return var_phi;} + double get_phi (int N) const {_SWITCH((phi)); return var_phi;} /* Initialize the RNGs */ void set_RNG (void); @@ -85,8 +85,6 @@ class Thalamic_Column { /* Activation functions */ double m_inf_T_t (int) const; double m_inf_T_r (int) const; - double tau_m_T_t (int) const; - double tau_m_T_r (int) const; double m_inf_h (int) const; double tau_m_h (int) const; @@ -132,8 +130,6 @@ class Thalamic_Column { y = _INIT(0.0), /* derivative of phi */ h_T_t = _INIT(0.0), /* inactivation of T channel */ h_T_r = _INIT(0.0), /* inactivation of T channel */ - m_T_t = _INIT(0.0), /* activation of T channel */ - m_T_r = _INIT(0.0), /* activation of T channel */ m_h = _INIT(0.0), /* activation of h channel */ m_h2 = _INIT(0.0), /* activation of h channel bound with protein */ P_h = _INIT(0.0); /* fraction of protein bound with calcium */ @@ -146,8 +142,8 @@ class Thalamic_Column { /* Declaration and Initialization of parameters */ /* Membrane time in ms */ - const double tau_t = 30; - const double tau_r = 30; + const double tau_t = 20; + const double tau_r = 20; /* Maximum firing rate in ms^-1 */ const double Qt_max = 400.E-3; @@ -158,8 +154,8 @@ class Thalamic_Column { const double theta_r = -58.6; /* Sigmoid gain in mV */ - const double sigma_t = 9; - const double sigma_r = 9; + const double sigma_t = 2; + const double sigma_r = 2; /* Scaling parameter for sigmoidal mapping (dimensionless) */ const double C1 = (3.14159265/sqrt(3)); @@ -177,7 +173,7 @@ class Thalamic_Column { const double g_L_r = 1; /* Potassium leak current */ - const double g_LK_t = 0.02; + const double g_LK_t = 0.025; const double g_LK_r = 0.02; /* T current */ @@ -185,14 +181,7 @@ class Thalamic_Column { const double g_T_r = 2; /* h current */ - const double g_h = 0.04; - - /* Connectivities (dimensionless) */ - const double N_tr = 10; - const double N_rt = 10; - const double N_rr = 40; - const double N_et = 10; - const double N_er = 10; + const double g_h = 0.07; /* Reversal potentials in mV */ /* Synaptic */ @@ -230,6 +219,14 @@ class Thalamic_Column { const double dphi = 10E-3;; double input = 0.0; + + /* Connectivities (dimensionless) */ + const double N_tr = 5; + const double N_rt = 5; + const double N_rr = 50; + const double N_et = 10; + const double N_er = 10; + /* Pointer to cortical column */ Cortical_Column* Cortex; }; diff --git a/saves.h b/saves.h index 927a5ea..852374c 100644 --- a/saves.h +++ b/saves.h @@ -32,8 +32,8 @@ /* Save data */ /****************************************************************************************************/ inline void get_data(int counter, Cortical_Column& Cortex, Thalamic_Column& Thalamus, double* Ve, double* Vt) { - Ve [counter] = Cortex.Ve [0]; - Vt [counter] = Thalamus.Vt [0]; + Ve [counter] = Cortex.Ve [0]; + Vt [counter] = Thalamus.Vt [0]; } /****************************************************************************************************/ /* end */