From 6476f5f49b373cd4cf05f2e73389df83e437d597 Mon Sep 17 00:00:00 2001 From: Johannes Ranke Date: Thu, 13 Feb 2025 16:30:31 +0100 Subject: Axis legend formatting, update vignettes --- docs/dev/articles/web_only/compiled_models.html | 292 ------------------------ 1 file changed, 292 deletions(-) delete mode 100644 docs/dev/articles/web_only/compiled_models.html (limited to 'docs/dev/articles/web_only/compiled_models.html') diff --git a/docs/dev/articles/web_only/compiled_models.html b/docs/dev/articles/web_only/compiled_models.html deleted file mode 100644 index e7905860..00000000 --- a/docs/dev/articles/web_only/compiled_models.html +++ /dev/null @@ -1,292 +0,0 @@ - - - - - - - -Performance benefit by using compiled model definitions in mkin • mkin - - - - - - - - - - - - - -
-
- - - - -
-
- - - - -
-

How to benefit from compiled models -

-

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

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

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

-
-Sys.getenv("HOME")
-
-
-

Comparison with other solution methods -

-

First, we build a simple degradation model for a parent compound with -one metabolite, and we remove zero values from the dataset.

-
-library("mkin", quietly = TRUE)
-SFO_SFO <- mkinmod(
-  parent = mkinsub("SFO", "m1"),
-  m1 = mkinsub("SFO"))
-
## Temporary DLL for differentials generated and loaded
-
-FOCUS_D <- subset(FOCUS_2006_D, value != 0)
-

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. In the output of -below code, the warnings about zero being removed from the FOCUS D -dataset are suppressed. Since mkin version 0.9.49.11, an analytical -solution is also implemented, which is included in the tests below.

-
-if (require(rbenchmark)) {
-  b.1 <- benchmark(
-    "deSolve, not compiled" = mkinfit(SFO_SFO, FOCUS_D,
-       solution_type = "deSolve",
-       use_compiled = FALSE, quiet = TRUE),
-    "Eigenvalue based" = mkinfit(SFO_SFO, FOCUS_D,
-       solution_type = "eigen", quiet = TRUE),
-    "deSolve, compiled" = mkinfit(SFO_SFO, FOCUS_D,
-       solution_type = "deSolve", quiet = TRUE),
-    "analytical" = mkinfit(SFO_SFO, FOCUS_D,
-       solution_type = "analytical",
-       use_compiled = FALSE, quiet = TRUE),
-    replications = 1, order = "relative",
-    columns = c("test", "replications", "relative", "elapsed"))
-  print(b.1)
-} else {
-  print("R package rbenchmark is not available")
-}
-
##                    test replications relative elapsed
-## 4            analytical            1    1.000   0.105
-## 3     deSolve, compiled            1    1.276   0.134
-## 2      Eigenvalue based            1    1.762   0.185
-## 1 deSolve, not compiled            1   21.914   2.301
-

We see that using the compiled model is by more than a factor of 10 -faster than using deSolve without compiled code.

-
-
-

Model without analytical solution -

-

This evaluation is also taken from the example section of mkinfit. No -analytical solution is available for this system, and now Eigenvalue -based solution is possible, so only deSolve using with or without -compiled code is available.

-
-if (require(rbenchmark)) {
-  FOMC_SFO <- mkinmod(
-    parent = mkinsub("FOMC", "m1"),
-    m1 = mkinsub( "SFO"))
-
-  b.2 <- benchmark(
-    "deSolve, not compiled" = mkinfit(FOMC_SFO, FOCUS_D,
-                                      use_compiled = FALSE, quiet = TRUE),
-    "deSolve, compiled" = mkinfit(FOMC_SFO, FOCUS_D, quiet = TRUE),
-    replications = 1, order = "relative",
-    columns = c("test", "replications", "relative", "elapsed"))
-  print(b.2)
-  factor_FOMC_SFO <- round(b.2["1", "relative"])
-} else {
-  factor_FOMC_SFO <- NA
-  print("R package benchmark is not available")
-}
-
## Temporary DLL for differentials generated and loaded
-
##                    test replications relative elapsed
-## 2     deSolve, compiled            1    1.000   0.176
-## 1 deSolve, not compiled            1   23.938   4.213
-

Here we get a performance benefit of a factor of 24 using the version -of the differential equation model compiled from C code!

-

This vignette was built with mkin 1.2.3 on

-
## R version 4.2.3 (2023-03-15)
-## Platform: x86_64-pc-linux-gnu (64-bit)
-## Running under: Debian GNU/Linux 12 (bookworm)
-
## CPU model: AMD Ryzen 9 7950X 16-Core Processor
-
-
- - - -
- - - - -
- - - - - - - - -- cgit v1.2.1