-- Ion currents library -- module(..., package.seeall); require 'lib' function particle_tau (alpha, beta) return function (V) return 1 / (alpha(V) + beta(V)) end end function particle_inf (alpha, beta) return function (V) return 1 / (1 + beta(V) / alpha(V)) end end function gating_rater1(a,b,c) -- returns a rate function, like \alpha or \beta return function (V) local x = V - b if math.abs(x) < 1e-7 then return -a*c else return a*x/(1 - math.exp(x/c)) end end end function gating_rater2(a,b,c) return function (V) return a/(1 + math.exp((V-b)/c)) end end ------------------------------------------------------------ ---- Fast K current activation ----------------------------- ------------------------------------------------------------ fpc = {n={}} -- MRG: fpc.n.mrg = {order=4, q10 = 3.0, tref = 20} fpc.n.mrg.alpha = gating_rater1(7.97e-3, -83.2, -1.1) fpc.n.mrg.beta = gating_rater1(-1.41e-2, -66, 10.5) fpc.n.srb = { --fast K activation [Swarz, Reid, Bostock] q10 = 3.0, tref = 20, order = 4, alpha = gating_rater1(7.98e-3, -93.2, -1.1), beta = gating_rater1(-1.42e-2, -76.0, 10.5), } fpc.n.hana = lib.deepcopy(fpc.n.srb) fpc.n.my = { --fast K activation [me] q10 = 3.0, tref = 20, order = 4, alpha = gating_rater1(7.98e-3, -87.2, -1.1), beta = gating_rater1(-1.42e-2, -70, 10.5), } for _,gv in pairs(fpc.n) do gv.inf = particle_inf(gv.alpha, gv.beta) gv.tau = particle_tau(gv.alpha, gv.beta) end ------------------------------------------------------------ ---- Fast sodium current activation ------------------------ ------------------------------------------------------------ fsc = {m = {},h = {}} fsc.m.se = { -- fast Na current activation -- from Scwharz-Eikhof model order = 3, q10 = 2.2, tref = 37, alpha = gating_rater1(1.87, 25.4-80, -6.06), beta = gating_rater1(-3.97, 21-80, 9.41), } fsc.m.mrg = { --fast Na current activation, [McIntyre :MRGaxon/Axnode.mod] q10 = 2.2, tref = 20, order = 3, alpha = gating_rater1(1.86, -20.4, -10.3), beta = gating_rater1(-0.086, -25.7, 9.16), } fsc.m.srb = { -- fast Na current activation, [Swarz, Reid, Bostock] q10 = 2.2, tref = 20, order = 3, alpha = gating_rater1(1.86, -18.4, -10.3), beta = gating_rater1(-0.086, -22.7, 9.16) } fsc.m.hana = lib.deepcopy(fsc.m.srb) ------------------------------------------------------------ ------------------------------------------------------------ ---- Fast sodium current inactivation ---------------------- ------------------------------------------------------------ fsc.h.mrg = { --fast Na current inactivation [McIntyre :MRGaxon/Axnode.mod] q10 = 2.9, tref = 20, order = 1, alpha = gating_rater1(-0.062, -114, 11), beta = gating_rater2(2.3, -31.8, -13.4), } fsc.h.srb = { --fast Na current inactivation [Swarz, Reid, Bostock] q10 = 2.9, tref = 20, order = 1, alpha = gating_rater1(-0.0336, -111, 11), beta = gating_rater2(2.3, -28.8, -13.4), } fsc.h.hana = lib.deepcopy(fsc.h.srb) fsc.h.se = { -- fast Na current inactivation -- alpha and beta are taken from Scwharz-Eikhof model q10 = 2.9, order = 1, tref = 37, alpha = gating_rater1(-0.55, -(80+27.74), 9.06), beta = gating_rater2(22.6, 56-80, -12.5) } ---------------------------------------- for _,gv in pairs(fsc) do for _,gvv in pairs(gv) do gvv.inf = particle_inf(gvv.alpha, gvv.beta) gvv.tau = particle_tau(gvv.alpha, gvv.beta) end end ------------------------------------------------------------ ------------------------------------------------------------ ---- Persitent sodum currents ------------------------------ ------------------------------------------------------------ psc = {p={}} psc.p.mrg = { -- persistent sodium current activation -- [McIntyre etal 2002 :MRGaxon/Axnode.mod] q10 = 2.2, tref = 20, order = 3, alpha = gating_rater1(0.01, -27, -10.2), beta = gating_rater1(-2.5e-4, -34, 10), } psc.p.fh = { -- persistent Na current activation -- [FH, cit. from Rattay-Aberham] q10 = 2.2, tref = 20, order = 2, alpha = gating_rater1(6e-3, 40-80, -10), beta = gating_rater1(-9e-2, -(80+25), 20), } psc.p.hana = { -- persistent Na current activation -- [SRB] -- [Hennings, Arendt-Nielsen, Andersen, 2005] q10 = 2.2, tref = 20, order = 3, alpha = gating_rater1(0.93, -38.4, -10.3), beta = gating_rater1(-0.043, -42.7, 9.16), } psc.p.my = { -- persistent Na current activation -- [Hennings, Arendt-Nielsen, Andersen, 2005] -> me q10 = 2.2, tref = 20, order = 3, alpha = gating_rater1(0.1, -38.4, -10.3), beta = gating_rater1(-0.02, -30.7, 9.16), } for _,gv in pairs(psc.p) do gv.inf = particle_inf(gv.alpha, gv.beta) gv.tau = particle_tau(gv.alpha, gv.beta) end ------------------------------------------------------------ ---- Slow potassium currents ------------------------------- ------------------------------------------------------------ spc = {s={}} spc.s.mrg = { -- Ks current [McIntyre etal 2002] q10 = 3.0, tref = 36, order = 1, alpha = gating_rater2(0.3, -53, -5), -- strange beta = gating_rater2(0.03, -90, -1), -- strange } spc.s.srb = { -- Ks current, [Swarz, Reid, Bostock, 1995] q10 = 3.0, tref = 20, order = 1, alpha = gating_rater1(1.22e-3, -12.5, -23.6), beta = gating_rater1(-7.39e-4, -80.1, 21.8), } spc.s.hana = { -- Ks current, [Hennings, Arendt-Nielsen, Andersen, 2005] q10 = 3.0, tref = 20, order = 1, alpha = gating_rater1(1.22e-2, -12.5, -16.9), beta = gating_rater1(-7.36e-4, -80.1, 12.6), } spc.s.my = { -- Ks current, -- [Hennings, Arendt-Nielsen, Andersen, 2005] -> me q10 = 3.0, tref = 20, order = 1, alpha = gating_rater1(1.2e-3, -19, -18), beta = gating_rater1(-7.4e-4, -82, 16), } spc.s.se = { -- (slow?) potassium current from Swarz-Eikhof model q10 = 3.0, tref = 37, order = 2, alpha = gating_rater1(0.13, 35-80, -10), beta = gating_rater1(-0.32, 10-80, 10), } for _,gv in pairs(spc.s) do gv.inf = particle_inf(gv.alpha, gv.beta) gv.tau = particle_tau(gv.alpha, gv.beta) end ------------------------------------------------------------ -- References: -- -- Hennings, Arendt-Nielsen, Andersen. Breakdown of accomodation in -- nerve: a possible role for persistent sodium current, -- _Theoretical Biology and Medical Modelling_ *2*:16 (2005) -- -- McIntyre, Richardson, Grill, -- _J. Neurophysiol._, *87*:995--1006, (2002) -- -- Rattay, Aberham, Modelling axonal membranes for functional -- electrical simulation. _IEEE Trans. Biomed. Eng._, -- *40*(12):1201--1209, (1993) -- -- Swarz, Reid, Bostock, Action potentials and membrane currents in -- the human node of Ranvier, _Eur. Biophys. J_, *430*:283--292 (1995)