From 47ba9ea512b82fb8b31da8ec5558f3c0952d86d4 Mon Sep 17 00:00:00 2001 From: Johannes Ranke Date: Thu, 2 Apr 2020 10:58:34 +0200 Subject: Compiled models article, reduce distractions - Added a section with platform specific notes on getting compiled models to work to the compiled models article - Don't return empty SFORB parameter list from endpoints() if there is no SFORB model - Avoid warnings when using standardized = TRUE in plot.mmkin() --- vignettes/web_only/compiled_models.Rmd | 53 ++++++++++++++++++++++++++-------- 1 file changed, 41 insertions(+), 12 deletions(-) (limited to 'vignettes/web_only/compiled_models.Rmd') diff --git a/vignettes/web_only/compiled_models.Rmd b/vignettes/web_only/compiled_models.Rmd index 26d86811..3f4e0097 100644 --- a/vignettes/web_only/compiled_models.Rmd +++ b/vignettes/web_only/compiled_models.Rmd @@ -18,17 +18,46 @@ library(knitr) opts_chunk$set(tidy = FALSE, cache = FALSE) ``` -## Model that can also be solved with Eigenvalues +## How to benefit from compiled models -This evaluation is taken from the example section of mkinfit. When using an mkin version -equal to or greater than 0.9-36 and a C compiler (gcc) is available, you will see -a message that the model is being compiled from autogenerated C code when -defining a model using mkinmod. The `mkinmod()` function checks for presence of -the gcc compiler using +When using an mkin version equal to or greater than 0.9-36 and a C compiler is +available, you will see a message that the model is being compiled from +autogenerated C code when defining a model using mkinmod. Starting from +version 0.9.49.9, the `mkinmod()` function checks for presence of a compiler +using -```{r check_gcc} -Sys.which("gcc") +```{r check_gcc, eval = FALSE} +pkgbuild::has_compiler() ``` + +In previous versions, it used `Sys.which("gcc")` for this check. + +On Linux, you need to have the essential build tools like make and gcc or clang +installed. On Debian based linux distributions, these will be pulled in by installing +the build-essential package. + +On MacOS, which I do not use personally, I have had reports that a compiler is +available by default. + +On Windows, you need to install Rtools and have the path to its bin directory +in your PATH variable. You do not need to modify the PATH variable when +installing Rtools. Instead, I would recommend to put the line + +```{r Rprofile, eval = FALSE} +Sys.setenv(PATH = paste("C:/Rtools/bin", Sys.getenv("PATH"), sep=";")) +``` +into your .Rprofile startup file. This is just a text file with some R +code that is executed when your R session starts. It has to be named .Rprofile +and has to be located in your home directory, which will generally be your +Documents folder. You can check the location of the home directory used by R by +issuing + +```{r HOME, eval = FALSE} +Sys.getenv("HOME") +``` + +## Comparison with Eigenvalue based solutions + First, we build a simple degradation model for a parent compound with one metabolite. ```{r create_SFO_SFO} @@ -40,10 +69,10 @@ SFO_SFO <- mkinmod( We can compare the performance of the Eigenvalue based solution against the compiled version and the R implementation of the differential equations using -the benchmark package. - +the benchmark package. In the output of below code, the warnings about zero +being removed from the FOCUS D dataset are suppressed. -```{r benchmark_SFO_SFO, fig.height = 3} +```{r benchmark_SFO_SFO, fig.height = 3, message = FALSE, warning = FALSE} if (require(rbenchmark)) { b.1 <- benchmark( "deSolve, not compiled" = mkinfit(SFO_SFO, FOCUS_2006_D, @@ -73,7 +102,7 @@ iterative solution of the ODEs. This evaluation is also taken from the example section of mkinfit. -```{r benchmark_FOMC_SFO, fig.height = 3} +```{r benchmark_FOMC_SFO, fig.height = 3, warning = FALSE} if (require(rbenchmark)) { FOMC_SFO <- mkinmod( parent = mkinsub("FOMC", "m1"), -- cgit v1.2.1