Kyle,

D’oh! You’re absolutely right. Embarrassing. :-}
(I’m told that’s the emoticon for ‘sheepish grin’.)

I did try going the way suggested by deSolve, but find that (for reasons 
unknown to me), “R CMD SHLIB” compiles the object file but not the DLL (error 
about not having permission).

I wasn’t aware of RxODE at all (and only vaguely familiar with mrgsolve), but 
installed it, read through the tutorial (from the journal CPT-PSP), and within 
a few hours was in business. It won’t be for everyone of course, since it’s 
specialized for PK/PD modeling, but it enabled me to get a 15x performance 
improvement in my application (which requires repeated model evaluation to 
optimize a study design). This is huge: over-lunchbreak vs over-night. If the 
speedup reported by the authors in their tutorial applies to my situation, this 
improvement factor will improve as the model grows (currently just 2 ODEs).

For those with similar goals as mine (PK/PD models), highly recommend it. Much 
like Rcpp, it enables specification of both the compiled and non-compiled parts 
of the code in a single file. But like SHLIB, it compiles behind the scenes 
(few seconds), and while I don’t fully understand what’s going on under the 
hood, it performs as if there’s a minimum of back-and-forth between R and C.

Many thanks to you both

-Frank

From: Kyle Baron [mailto:ky...@metrumrg.com]
Sent: Monday, January 23, 2017 1:35 PM
To: Dirk Eddelbuettel <e...@debian.org>
Cc: Gibbons, Frank <frank.gibb...@astrazeneca.com>; 
rcpp-devel@lists.r-forge.r-project.org
Subject: Re: [Rcpp-devel] Using Rcpp to solve ODEs: LSODE (deSolve) says 
"Confusion over the length of parms"

Frank -

In the code you provided, it looks like it is "poped.db.compiled.rcpp", not 
"poped.db.compiled".

I found that, after making the change to fix the error that Dirk pointed out, 
the code appears to work with no error (attached).  I don't know if the results 
are what you were intending, however.

Also: I would not set up the optimization like this.  When you create the 
one_comp_oral_ode function with cppFunction and hand that off to deSolve, you 
are still passing along an R function to get called.  Even if the calculations 
are accomplished with Rcpp, it still an R function.  So every step the solver 
takes, it will have to call an R function.  I don't think this is what you 
want. When you write the ode function as suggested by the deSolve package 
vignette, you pass off the name of a C function and the solver calls that C 
function directly as the system advances.  It will be faster than what you are 
doing with cppFunction.

Finally, I'll ask if you have looked at one of the more-modern simulation 
packages for R that are designed for PK/PD work?
I maintain mrgsolve: https://github.com/metrumresearchgroup/mrgsolve
You could also look at RxODE: 
https://cran.r-project.org/web/packages/RxODE/index.html

Hope that helps ...
Kyle



On Sun, Jan 22, 2017 at 7:50 PM, Dirk Eddelbuettel 
<e...@debian.org<mailto:e...@debian.org>> wrote:

Frank,

That's a pretty long message and a lot of code.  Can you try to distill it
down to a particular (smaller?) issue?

And FWIW I cannot run. After saving your attachment, and installing PopED, I
get

R> source("/tmp/myExampleODE.compiled.R")

Attaching package: ‘deSolve’

The following object is masked from ‘package:graphics’:

    matplot

Elapsed time: 10.425 seconds.
Error in poped.db$settings$optsw[2] <- opt_xt :
  object 'poped.db.compiled' not found
R>

I also recommend the rbenchmark and microbenchmark packages over tic() and 
toc().

Sorry that I have no quick fix.

Dirk

--
http://dirk.eddelbuettel.com | @eddelbuettel | 
e...@debian.org<mailto:e...@debian.org>
_______________________________________________
Rcpp-devel mailing list
Rcpp-devel@lists.r-forge.r-project.org<mailto:Rcpp-devel@lists.r-forge.r-project.org>
https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel



--
Kyle Baron
Metrum Research Group
860-735-7043, Ext. 202
ky...@metrumrg.com<mailto:ky...@metrumrg.com>

________________________________

Confidentiality Notice: This message is private and may contain confidential 
and proprietary information. If you have received this message in error, please 
notify us and remove it from your system and note that you must not copy, 
distribute or take any action in reliance on it. Any unauthorized use or 
disclosure of the contents of this message is not permitted and may be unlawful.
_______________________________________________
Rcpp-devel mailing list
Rcpp-devel@lists.r-forge.r-project.org
https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel

Reply via email to