On 04-07-2013, at 17:15, Jannetta Steyn <janne...@henning.org> wrote:
> Hi folks > > I have implemented a model of a neuron using Hodgkin Huxley equations in > both R and MatLab. My preference is to work with R but R is not giving me > the correct results. I also can't use ode45 as it just seems to go into an > indefinite loop. However, the MatLab implementation work fine with the same > equations, parameters and initial values and ode45. Below is my R and > MatLab implementations. > No problem in running your R file. Have plot. (Mac mini Core2Duo 2.66Ghz running R 3.0.1 Patched (2013-06-19 r62992) on Mac OS X 10.8.4: 16.5 seconds.) Trying to run your Matlab file in Octave. No success yet because of unavailable ode45. Berend > I'd really appreciate any help. > > R > == > > rm(list=ls()) > > library(deSolve) > > ST <- function(time, init, parms) { > with(as.list(c(init, parms)),{ > > #functions to calculate activation m and inactivation h of the currents > #Axon > mNax <- function(v) 1/(1+exp(-(v+24.7)/5.29)) > taumNa <- function(v) 1.32-(1.26/(1+exp(-(v+120)/25))) > hNax <- function(v) 1/(1+exp((v+48.9)/5.18)) > tauhNa <- function(v) > 0.67/(1+exp(-(v+62.9)/10))*(1.5+(1/(1+exp((v+34.9)/3.6)))); > mKx <- function(v) 1/(1+exp(-(v+14.2)/11.8)) > taumK <- function(v) 7.2-(6.4/(1+exp(-(v+28.3)/19.2))) > > > # Currents as product of maximal conducatance(g), activation(m) and > inactivation(h) > # Driving force (v-E) where E is the reversal potential of the > particular ion > > # AB axon > iNa_axon_AB <- > gNa_axon_AB*mNa_axon_AB^3*hNa_axon_AB*(v_axon_AB-ENa_axon_AB) > iK_axon_AB <- gK_axon_AB*mK_axon_AB^4*(v_axon_AB-EK_axon_AB) > iLeak_axon_AB <- gLeak_axon_AB*(v_axon_AB-ELeak_axon_AB) > > # AB Axon equations > dv_axon_AB <- (0 -iNa_axon_AB -iK_axon_AB -iLeak_axon_AB)/C_axon_AB > dmNa_axon_AB <- (mNax(v_axon_AB)-mNa_axon_AB)/taumNa(v_axon_AB) > dhNa_axon_AB <- (hNax(v_axon_AB)-hNa_axon_AB)/tauhNa(v_axon_AB) > dmK_axon_AB <- (mKx(v_axon_AB)-mK_axon_AB)/taumK(v_axon_AB) > > list(c(dv_axon_AB,dmNa_axon_AB, dhNa_axon_AB, dmK_axon_AB > )) > > })} > ## Set initial state > init = c(v_axon_AB=-55,mNa_axon_AB=1,hNa_axon_AB=0,mK_axon_AB=1 > ) > ## Set parameters > # AB > > gNa_axon_AB=300e-3 > gK_axon_AB=52.5-3 > gLeak_axon_AB=0.0018e-3 > > # AB Axon Reversal potentials > ENa_axon_AB=50 > EK_axon_AB=-80 > ELeak_axon_AB=-60 > > C_axon_AB=1.5e-3 > > > I=0 > > parms = > c(ENa_axon_AB,EK_axon_AB,ELeak_axon_AB,gNa_axon_AB,gK_axon_AB,gLeak_axon_AB,C_axon_AB) > ## Set integrations times > times = seq(from=0, to=5000, by = 0.05); > > out<-ode(y=init, times=times, func=ST, parms=parms, method="lsoda") > plot(out) > o<-data.frame(out) > > plot(o$v_axon_AB,type='l') > > > MatLab > ====== > > File: init.m > clear all > close all > clc > > global c_axon_AB ... > gNa_axon_AB gK_axon_AB gLeak_axon_AB ... > ENa_axon_AB EK_axon_AB ELeak_axon_AB I > > T_MAX = 5000; % ms > step = 0.05; > > gNa_axon_AB=300e-3; > gK_axon_AB=52.5-3; > gLeak_axon_AB=0.0018e-3; > > % AB Axon Reversal potentials > ENa_axon_AB=50; > EK_axon_AB=-80; > ELeak_axon_AB=-60; > > c_axon_AB=1.5e-3; > > I=0; > > x0 = [-55, 0, 1, 0]; > > simulate(T_MAX, step, x0) > % c_axon_AB, gNa_axon_AB, gK_axon_AB, gLeak_axon_AB, ENa_axon_AB, > EK_axon_AB, ELeak_axon_AB, I, > > > > File: simulate.m > ============ > > function[] = simulate(T_MAX, step, x0) > %c_axon_AB, gNa_axon_AB, gK_axon_AB, gLeak_axon_AB, ENa_axon_AB, > EK_axon_AB, ELeak_axon_AB, I, > close all > clc > global c_axon_AB ... > gNa_axon_AB gK_axon_AB gLeak_axon_AB ... > ENa_axon_AB EK_axon_AB ELeak_axon_AB I > > tspan=0:step:T_MAX; > > %Sx0 = [-55, 0, 1, 0]; > % x0 = [v_axon_AB mNa_axon_AB hNa_axon_AB mK_axon_AB] > > [t,x] = ode45(@integrate, tspan, x0); > > v_axon_AB = x(1); > > vars = getVariables(t,x0); > > > figure > set(gcf,'numbertitle','off','name','AB - Membrane potential') > plot(t,v_axon_AB) > title('v axon') > > > function out = mNax(v) > out = 1/(1+exp(-(v+24.7)/5.29)); > > function out = taumNa(v) > out = 1.32-(1.26/(1+exp(-(v+120)/25))); > > function out = hNax(v) > out = 1/(1+exp((v+48.9)/5.18)); > > function out = tauhNa(v) > out = 0.67/(1+exp(-(v+62.9)/10))*(1.5+(1/(1+exp((v+34.9)/3.6)))); > > %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% > > function out = mKx(v) > out = 1/(1+exp(-(v+14.2)/11.8)); > > function out = taumK(v) > out = 7.2-(6.4/(1+exp(-(v+28.3)/19.2))); > > %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% > > function xdot = integrate(t,x) > global c_axon_AB ... > gNa_axon_AB gK_axon_AB gLeak_axon_AB ... > ENa_axon_AB EK_axon_AB ELeak_axon_AB I > > v_axon_AB = x(1); > mNa_axon_AB = x(2); > hNa_axon_AB = x(3); > mK_axon_AB = x(4); > > iNa_axon = gNa_axon_AB*mNa_axon_AB^3*hNa_axon_AB*(v_axon_AB-ENa_axon_AB); > iK_axon = gK_axon_AB*mK_axon_AB^4*(v_axon_AB-EK_axon_AB); > iLeak_axon = ELeak_axon_AB*(v_axon_AB-ELeak_axon_AB); > > dv_axon_AB = (0 -iNa_axon -iK_axon -iLeak_axon)/c_axon_AB; > > dmNa_axon_AB = (mNax(v_axon_AB)-mNa_axon_AB)/taumNa(v_axon_AB); > dhNa_axon_AB = (hNax(v_axon_AB)-hNa_axon_AB)/tauhNa(v_axon_AB); > dmK_axon_AB = (mKx(v_axon_AB)-mK_axon_AB)/taumK(v_axon_AB); > > xdot = [dv_axon_AB dmNa_axon_AB dhNa_axon_AB dmK_axon_AB]'; > > %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% > > function out = getVariables(t,x) > global c_axon_AB ... > gNa_axon_AB gK_axon_AB gLeak_axon_AB ... > ENa_axon_AB EK_axon_AB ELeak_axon_AB I > > > v_axon_AB = x(1); > mNa_axon_AB = x(2); > hNa_axon_AB = x(3); > mK_axon_AB = x(4); > > iNa_axon = > gNa_axon_AB.*mNa_axon_AB.^3.*hNa_axon_AB.*(v_axon_AB-ENa_axon_AB); > iK_axon = gK_axon_AB.*mK_axon_AB.^4.*(v_axon_AB-EK_axon_AB); > iLeak_axon = gLeak_axon_AB.*(v_axon_AB-ELeak_axon_AB); > > out = [iNa_axon iK_axon iLeak_axon ]; > > > > Regards > Jannetta > > -- > > =================================== > Web site: http://www.jannetta.com > Email: janne...@henning.org > =================================== > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.