Aah. Thanks. I remember someone mentioned a named vector and I meant to ask
what that was, but I forgot. I have now fixed  it.


On 5 July 2013 17:18, Berend Hasselman <b...@xs4all.nl> wrote:

>
> On 05-07-2013, at 17:37, Jannetta Steyn <janne...@henning.org> wrote:
>
> > Thank you very much to all of you for your help. This model now works as
> it
> > should (I believe). This is the final code:
> >
> > 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=0,hNa_axon_AB=1,mK_axon_AB=0)
> > ## Set parameters
> > # AB
> >
> > gNa_axon_AB=300e-3
> > gK_axon_AB=52.5e-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="ode45")
> >
> > o<-data.frame(out)
> >
> > plot(o$v_axon_AB~o$time,type='l')
> >
>
> You must make the parms vector a named vector because the with(.. in your
> function ST is not using the global values for those entities available in
> the global environment.
>
> You can check this by inserting this line after the line with times =  and
> before the line out <- ode(…
>
>
> rm(list=c("ENa_axon_AB","EK_axon_AB","ELeak_axon_AB","gNa_axon_AB","gK_axon_AB","gLeak_axon_AB","C_axon_AB"))
>
> You will get an error.
>
> So create the parms vector like this
>
> parms =
>
> c(ENa_axon_AB=ENa_axon_AB,EK_axon_AB=EK_axon_AB,ELeak_axon_AB=ELeak_axon_AB,gNa_axon_AB=gNa_axon_AB,
>     gK_axon_AB=gK_axon_AB,gLeak_axon_AB=gLeak_axon_AB,C_axon_AB=C_axon_AB)
>
> or better
>
> parms <-
> c(ENa_axon_AB=50,EK_axon_AB=-80,ELeak_axon_AB=-60,gNa_axon_AB=300e-3,
>
> gK_axon_AB=52.5e-3,gLeak_axon_AB=0.0018e-3,C_axon_AB=1.5e-3)
>
> and remove the expressions with the separate assignments to the variables.
>
>
> And use <- !!
>
> Berend
>
>
>
>
>
>
>


-- 

===================================
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.

Reply via email to