[R] R and MatLab implementations of the same model differs

Berend Hasselman bhh at xs4all.nl
Thu Jul 4 20:14:34 CEST 2013


On 04-07-2013, at 19:56, peter dalgaard <pdalgd at gmail.com> wrote:

> 
> On Jul 4, 2013, at 19:11 , Berend Hasselman wrote:
> 
>> 
>> On 04-07-2013, at 18:42, Jannetta Steyn <jannetta at henning.org> wrote:
>> 
>>> Hi Ben and others
>>> 
>>> I don't quite know how to explain the "doesn't work" in more detail without
>>> any visual aid.
>> 
>> You said that R got into an indefinite loop, whatever that maybe.
>> 
>>> When you run the two scripts it is easy to see the
>>> difference. MatLab produces a line on x= -55. This is what I expect - a
>>> more or less straight line. R on the other hand the result drops from -55
>>> (the initial value) to -80 and then goes up to -71.37092.
>>> 
>>> The two scripts have exactly the same equations.
>> 
>> 
>> I don't think so.
>> In the R script you have
>> 
>> init = c(v_axon_AB=-55,mNa_axon_AB=1,hNa_axon_AB=0,mK_axon_AB=1)
>> 
>> That is not the same as in your Matlab script. To make them the same you should replace the line with
>> 
>> init = c(v_axon_AB=-55,mNa_axon_AB=0,hNa_axon_AB=1,mK_axon_AB=0)
>> 
>> Using this line gives quite different results. But not the same as Matlab.
>> 
>> It seems that you ought to carefully check all your equations.
>> I don't know enough about Matlab/Octave syntax to determine if the results of the two systems  are identical.
> 
> Also, the line
> 
>  iLeak_axon_AB <- gLeak_axon_AB*(v_axon_AB-ELeak_axon_AB)
> 
> differs from the Matlab code. Changing it gave me all-NA results, though. And the with() construct assumes that init and parms are named vectors; parms is not, so the values are taken from the global environment. It is not clear whether that makes a difference.
> 

Same NA results here. Making parms a named vector makes no difference but is is certainly necessary to do that.

In that case there is probably an inconsistency in the file simulate.m near the end:
The last non empty line before the line out = …  reads

iLeak_axon = gLeak_axon_AB.*(v_axon_AB-ELeak_axon_AB);

and this doesn't agree with the line

iLeak_axon = ELeak_axon_AB*(v_axon_AB-ELeak_axon_AB);

in the function xdot.

Final question for the OP: if the model is supposed to be dynamic, isn't it suspicious that Matlab gives a constant result?

Berend

> 
>> 
>> Berend
>> 
>>> I have even named the
>>> variables the same in the two scripts and copied the equations across to
>>> make sure I haven't made any typos.
>>> 
>>> Can one attach images to posts? I'll try. The flatline image is the plot
>>> from MatLab and the other is the plot from R.
>>> 
>>> Thanks
>>> Jannetta
>>> 
>>> 
>>> On 4 July 2013 16:52, Ben Bolker <bbolker at gmail.com> wrote:
>>> 
>>>> Berend Hasselman <bhh <at> xs4all.nl> writes:
>>>> 
>>>>> 
>>>>> 
>>>>> On 04-07-2013, at 17:15, Jannetta Steyn <jannetta <at> 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.
>>>> 
>>>> I'm impressed that you (BH) went to the trouble of checking
>>>> on this vague "doesn't work" question.  If you want to go farther
>>>> I think you can get ode45 for octave by installing the odepkg
>>>> package:
>>>> 
>>>> http://octave.sourceforge.net/odepkg/index.html
>>>> 
>>>> ______________________________________________
>>>> R-help at 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.
>>>> 
>>> 
>>> 
>>> 
>>> -- 
>>> 
>>> ===================================
>>> Web site: http://www.jannetta.com
>>> Email: jannetta at henning.org
>>> ===================================
>>> <Rplot01.png><MatPlot01.png>______________________________________________
>>> R-help at 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 at 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.
> 
> -- 
> Peter Dalgaard, Professor,
> Center for Statistics, Copenhagen Business School
> Solbjerg Plads 3, 2000 Frederiksberg, Denmark
> Phone: (+45)38153501
> Email: pd.mes at cbs.dk  Priv: PDalgd at gmail.com
> 
> 
> 
> 
> 
> 
> 
> 



More information about the R-help mailing list