module(...,package.seeall)
require "chlib"
require "el_ph"
require 'lib'
--- Refs:
--- SE-model: Swarz-Eikhof model [cited from Rattay and Aberham, 1993]
--- MRG: McIntyre, Richardson, Grill model [MRG, 2002]
--- MRGAxon: MRG, but original NEURON files
local global_variable_values = {
K_o = 3.2, -- mM -- to check
Na_i = 12, -- mM
V_a = -87,
}
local temp = 37
local global_parameters = {
dNai_switch = 1, -- either 0 or 1
dKo_switch = 1,
rho_a = 0.07, -- KOhm*cm, axonal resistivity
T = temp + 273, -- temperature
celsius = temp,
V_leak = -80,
c_m = 2, -- uF/cm^2, membrane capacitance per cm^2
Na_o = 140, -- mM
Na_i = 9.5, -- mM
K_i = 155, -- mM -- to check
K_o = 3.2, -- mM -- to check
g_s = 1.0, -- mS, transmyelin conductivity, per lamella membrane
--ko_sig = lib.logistic(200, 12, 4.2, 1), -- (interesting)
--ko_sig = lib.logistic(137, 2.5, 6, 1), -- (normal?)
--ko_sig = lib.logistic(90, 2.5, 6.6, 1), --[poster]
ko_sig = lib.logistic(4, 3.5, 7.0, 1), --[paper sc1!]
--ko_sig = lib.logistic(4, 3.5, 7.0, 1),
--ko_sig = lib.hill(4, 25, 7.0, 1),
--ko_sig = lib.logistic(4, 4.0, 6.5, 1),
nak_pump = {
--jnamax = 0.15e-6, -- mmole/(cm^2*s) -- in kidney
jnamax = 0.03e-6, -- mmole/(cm^2*s) --
a_na = 0.5, -- mM
a_k = 0.1, -- mM
--a_k = 5.4, -- mM
b_na = 2.4e-2,
b_k = 5.4e-3,
},
nak_pump_a = {
jnamax =0.07e-6, --mmole/(cm^2*s)
a_na = 9,
b_na = 1e-2,
a_k = 0.1,
b_k = 1e-3,
},
nak_pump_g = {
jnamax =0.07e-6, --mmole/(cm^2*s)
a_na = 0.1,
b_na = 1e-2,
a_k = 4.5,
b_k = 1e-3,
}
}
segments={} -- compartment descriptions
segments.SC_mine = {
-- Geometry-based (2nd version) model
-- Some parameters are from HANA-2005
type = "SC_geom",
pars = {
stimulated = true,
node = {
c_m = 2, --uF/cm^2
l = 1e-4, d = 3.5e-4,
h = 9e-4, -- cm, height of the restricted space (was: 8)
g_lk = 2, V_lk = -80,
wavy = 9, -- account for 'wavyness' of glial membrane in node
pump_a = global_parameters.nak_pump_a,
tau_passive = 2e4, -- passive K exchange in the node char. time (ms)
currents = {
iNat = {
ion = "Na",
gp = {m_n = chlib.fsc.m.srb, h_n = chlib.fsc.h.srb},
g = 2800},
iNap = {
ion = "Na",
gp = {p_n = chlib.psc.p.hana},
g = 24},
iKs = {
ion = "K",
gp = {s_n = chlib.spc.s.my},
--g = 112,
g = 90}}},
int = { -- internode
c_m = 1, c_s = 0.1, l= 0.129, d = 8.8e-4,
lpara = 80e-4,
D = 10e-4, h = 4e-7, g_lk = 4.2e-3, --g_s = 1.0,
Nl = 140,
R_il = 50e3, -- internodal leakage, not yet based on
--geometry!!!
kparaw = 0.58, -- доля каналов в параноде.
naparaw = 0.06,
tau_passive_K = 2e3, -- passive K exchange char. time (ms)
tau_passive_Na = 5e3, -- passive Na exchange char. time (ms)
tau_sw = 1000, -- tau for sw changes
g_Kglia = 2, -- total V-independent K conductance in Glion
g_lk_glia = 0.01,
V_lk_glia = -85,
currents = {
iKs = {
ion = "K",
gp = {s_i = chlib.spc.s.my},
g = 0.23},
iKf = {
ion = "K",
gp = {n_i = chlib.fpc.n.hana},
g = 3}}},
},
state = {V_n = -80, V_int = -80, V_g = -90,
m_n = 0.2, h_n = 0.2, p_n = 0.2, -- nonsense values
s_n = 0.1, s_i = 0.2, n_i = 0.2,
Ko_n = 3.2, Ko_p = 3.2, Ko_i = 3.2, Nai_n = 9, Nai_p = 9,
Nai_i = 9,
sw = 1.0,
},
virtuals = {ipump_p = 0, iKfp = 0, iKfi = 0}
}
segments.SC_mine.pars.node.pump_a.jnamax = global_parameters.nak_pump_a.jnamax*1.0
segments.Hana = { -- Based on HAA-2005 paper
type = "SC_simple",
pars = {
stimulated = true,
C_n = 0.22e-6, -- uF
C_my = 0.17e-6,
C_i = 379e-6,
G_lk_i = 1.7e-6,
R_il = 41e3,
node_currents = {
iNat = {
ion = "Na",
gp = {m_n = chlib.fsc.m.hana, h_n = chlib.fsc.h.hana},
G = 276e-6},
iNap = {
ion = "Na",
gp = {p_n = chlib.psc.p.hana},
--G = 7.1e-6},
G = 2.5e-5},
iKs = {
ion = "K",
gp = {s_n = chlib.spc.s.hana},
G = 17.4e-6},
iKf = {
ion = "K",
gp = {n_n = chlib.fpc.n.hana},
G = 4.1e-6}
},
internode_currents = {
iKs = {
ion = "K",
gp = {s_i = chlib.spc.s.hana},
G = 87.1e-6}
},
},
state = {
V_n = -86, V_int = -86,
h_n = 0.2, m_n = 0.2, p_n = 0.2,s_n = 0.2,
n_n = 0.2, s_i = 0.2,
},
virtuals = {ipump=0},
}
segments.Hana2 = {
-- Based on HANA-2005 paper, other currents, closer
-- to my own model
-- As well as Hana1 is a strangely hyperpolarized
type = "SC_simple",
pars = {
stimulated = true,
C_n = 0.22e-6, -- uF
C_my = 0.17e-6,
C_i = 379e-6,
--
G_lk_i = 1.7e-6,
--
R_il = 41e3,
--R_il = 120e3,
--
node_currents = {
iNat = {
ion = "Na",
gp = {m_n = chlib.fsc.m.srb, h_n = chlib.fsc.h.srb},
G = 276e-6},
iNap = {
ion = "Na",
gp = {p_n = chlib.psc.p.my},
G = 7.1e-6},
iKs = {
ion = "K",
gp = {s_n = chlib.spc.s.my},
G = 17.4e-6},
iKf = {
ion = "K",
gp = {n_n = chlib.fpc.n.hana},
G = 0.1e-6}
},
internode_currents = {
iKs = {
ion = "K",
gp = {s_i = chlib.spc.s.hana},
G = 87.1e-6},
iKf = {
ion = "K",
gp = {n_i = chlib.fpc.n.hana},
G = 100e-6}}
},
state = {
V_n = -86, V_int = -86,
h_n = 0.2, m_n = 0.2, p_n = 0.2,s_n = 0.2,
n_n = 0.2, s_i = 0.2, n_i = 0.2,
},
virtuals = {ipump=0},
}
sc1 = {tag='sc1', description = "A space-clamped model",
rule = {'SC_mine'}}
hana1 = {tag='hana1', description = "A space-clamped model (Hana)",
rule = {'Hana'}}
hana2 = {tag='hana2', description = "A space-clamped model (Hana)",
rule = {'Hana2'}}
--for k, gp in pairs(segments.Node.pars.gating_particles) do
--io.stderr:write(string.format('k is %s\n', k))
-- if segments.Node.state[k] then
-- segments.Node.state[k] = gp.inf(global_variable_values.V_a)
-- end
--end
for _,segment in pairs(segments) do
for key,val in pairs(global_variable_values) do
if segment.state[key] then -- only for those with such a variable
segment.state[key] = val
end
end
end
for _,segment in pairs(segments) do
for key,val in pairs(global_parameters) do
if not segment.pars[key] then
segment.pars[key] = val
end
end
end
numerics = {
--stepper = 'rkc'
stepper = 'rkc_a'
}