/* * Models of respiratory rhythm generation in the Pre-Botzinger * complex. II. Populations of coupled pacemaker neurons * * Model Status * * This CellML model represents a single neuron in a network of * cells. This cell model is based on "model 1" published in a * preceding paper (Butera et al. 1999) which is also described * in CellML as a stand alone CellML 1.0 model. To model inter-cellular * coupling a synaptic input current Isyn_e has been added to the * model. * * The MATLAB script (buteraModel.m) should be used to generate * a CellML file for multi-cell models. The generated model will * import butera_single_cell_1999.cellml repeatedly, once for each * of the multiple cells, and it will generate values from a random * normal distribution for the required connectivity coefficients * between the cells. The main model for the exposure (butera_ten_cell_1999.cellml) * was generated from the MATLAB script. * * Note: the OpenCell session file for this model may not work * when lauched from the model repository. In order to run the * session file, you may either clone the workspace or save the * session file, and then run the session from your local copy. * * Model Structure * * model diagram * * [[Image file: butera_1999.png]] * * The single cell neuron model is based on a single-compartment * Hodgkin-Huxley type formalism. It is composed of five ionic * currents across the plasma membrane: a fast sodium current, * INa; a delayed rectifier potassium current, IK; a persistent * sodium current, INaP; a passive leakage current, IL; and a tonic * current, Itonic_e In addition for the multicellular model a * synaptic current (Isyn_e) has been added to connect the cells * in the network. * * The original paper reference is cited below: * * Models of respiratory rhythm generation in the Pre-Botzinger * complex. II. Populations Of coupled pacemaker neurons, Butera * RJ Jr, Rinzel J, Smith JC, 1999, Journal of Neurophysiology, * 82, 398-415. PubMed ID: 10400967 */ import nsrunit; unit conversion on; // unit millisecond predefined // unit millivolt predefined //Warning: unit picoA_ renamed from picoA, as the latter is predefined in JSim with different fundamental units. unit picoA_=1E-9 ampere^1; unit nanoS=1E-9 kilogram^(-1)*meter^(-2)*second^3*ampere^2; unit picoF=1E-12 kilogram^(-1)*meter^(-2)*second^4*ampere^2; math main { realDomain time millisecond; time.min=0; extern time.max; extern time.delta; real s(time) dimensionless; when(time=time.min) s=1; real sum_g_syn_e_s(time) nanoS; real V_public(time) millivolt; real membrane.V(time) millivolt; when(time=time.min) membrane.V=-50.0; real C picoF; C=21.0; real i_app picoA_; i_app=0.0; real i_NaP(time) picoA_; real i_Na(time) picoA_; real i_K(time) picoA_; real i_L(time) picoA_; real i_tonic_e(time) picoA_; real i_syn_e(time) picoA_; real E_Na millivolt; E_Na=50.0; real g_Na nanoS; g_Na=28.0; real fast_sodium_current.m_infinity(time) dimensionless; real fast_sodium_current.n(time) dimensionless; when(time=time.min) fast_sodium_current.n=0.01; real fast_sodium_current_m_gate.theta_m millivolt; fast_sodium_current_m_gate.theta_m=-34.0; real fast_sodium_current_m_gate.sigma_m millivolt; fast_sodium_current_m_gate.sigma_m=-5.0; real fast_sodium_current_n_gate.n_infinity(time) dimensionless; real fast_sodium_current_n_gate.tau_n(time) millisecond; real fast_sodium_current_n_gate.tau_n_max millisecond; fast_sodium_current_n_gate.tau_n_max=10.0; real fast_sodium_current_n_gate.theta_n millivolt; fast_sodium_current_n_gate.theta_n=-29.0; real fast_sodium_current_n_gate.sigma_n millivolt; fast_sodium_current_n_gate.sigma_n=-4.0; real g_K nanoS; g_K=11.2; real E_K millivolt; E_K=-85.0; real potassium_current.n(time) dimensionless; when(time=time.min) potassium_current.n=0.01; real potassium_current_n_gate.n_infinity(time) dimensionless; real potassium_current_n_gate.tau_n(time) millisecond; real potassium_current_n_gate.tau_n_max millisecond; potassium_current_n_gate.tau_n_max=10.0; real potassium_current_n_gate.theta_n millivolt; potassium_current_n_gate.theta_n=-29.0; real potassium_current_n_gate.sigma_n millivolt; potassium_current_n_gate.sigma_n=-4.0; real g_NaP nanoS; g_NaP=2.8; real persistent_sodium_current.m_infinity(time) dimensionless; real h(time) dimensionless; when(time=time.min) h=0.46; real persistent_sodium_current_m_gate.theta_m millivolt; persistent_sodium_current_m_gate.theta_m=-40.0; real persistent_sodium_current_m_gate.sigma_m millivolt; persistent_sodium_current_m_gate.sigma_m=-6.0; real h_infinity(time) dimensionless; real tau_h(time) millisecond; real tau_h_max millisecond; tau_h_max=10000.0; real theta_h millivolt; theta_h=-48.0; real sigma_h millivolt; sigma_h=6.0; real g_L nanoS; g_L=2.8; real E_L millivolt; E_L=-57.5; real E_syn_e millivolt; E_syn_e=0.0; real g_tonic_e nanoS; g_tonic_e=0.0; real s_infinity(time) dimensionless; real kr dimensionless; kr=1.0; real tau_s millisecond; tau_s=5.0; real sigma_s millivolt; sigma_s=-5.0; real theta_s millivolt; theta_s=-10.0; real g_syn_e_1_2 nanoS; g_syn_e_1_2=0.10; real g_syn_e_1_3 nanoS; g_syn_e_1_3=0.10; real g_syn_e_1_4 nanoS; g_syn_e_1_4=0.10; real g_syn_e_1_5 nanoS; g_syn_e_1_5=0.10; // // // membrane.V:time=(((-1)*(i_NaP+i_Na+i_K+i_L+i_tonic_e+i_syn_e)+i_app)/C); // i_Na=(g_Na*fast_sodium_current.m_infinity^3*(1-fast_sodium_current.n)*(membrane.V-E_Na)); // fast_sodium_current.m_infinity=(1/(1+exp((membrane.V-fast_sodium_current_m_gate.theta_m)/fast_sodium_current_m_gate.sigma_m))); // fast_sodium_current.n:time=((fast_sodium_current_n_gate.n_infinity-fast_sodium_current.n)/fast_sodium_current_n_gate.tau_n); fast_sodium_current_n_gate.n_infinity=(1/(1+exp((membrane.V-fast_sodium_current_n_gate.theta_n)/fast_sodium_current_n_gate.sigma_n))); fast_sodium_current_n_gate.tau_n=(fast_sodium_current_n_gate.tau_n_max/cosh((membrane.V-fast_sodium_current_n_gate.theta_n)/(2*fast_sodium_current_n_gate.sigma_n))); // i_K=(g_K*potassium_current.n^4*(membrane.V-E_K)); // potassium_current.n:time=((potassium_current_n_gate.n_infinity-potassium_current.n)/potassium_current_n_gate.tau_n); potassium_current_n_gate.n_infinity=(1/(1+exp((membrane.V-potassium_current_n_gate.theta_n)/potassium_current_n_gate.sigma_n))); potassium_current_n_gate.tau_n=(potassium_current_n_gate.tau_n_max/cosh((membrane.V-potassium_current_n_gate.theta_n)/(2*potassium_current_n_gate.sigma_n))); // i_NaP=(g_NaP*persistent_sodium_current.m_infinity*h*(membrane.V-E_Na)); // persistent_sodium_current.m_infinity=(1/(1+exp((membrane.V-persistent_sodium_current_m_gate.theta_m)/persistent_sodium_current_m_gate.sigma_m))); // h:time=((h_infinity-h)/tau_h); h_infinity=(1/(1+exp((membrane.V-theta_h)/sigma_h))); tau_h=(tau_h_max/cosh((membrane.V-theta_h)/(2*sigma_h))); // i_L=(g_L*(membrane.V-E_L)); // i_tonic_e=(g_tonic_e*(membrane.V-E_syn_e)); // i_syn_e=(sum_g_syn_e_s*(membrane.V-E_syn_e)); s_infinity=(1/(1+exp((membrane.V-theta_s)/sigma_s))); s:time=(((1-s)*s_infinity-(-1)*(kr*s))/tau_s); V_public=membrane.V; // sum_g_syn_e_s=(g_syn_e_1_2*s+g_syn_e_1_3*s+g_syn_e_1_4*s+g_syn_e_1_5*s); }