From 91a5834dd701211f929fd25419dc34561ce3b4e7 Mon Sep 17 00:00:00 2001 From: Johannes Ranke Date: Fri, 14 Feb 2025 09:15:20 +0100 Subject: Initialize dev docs --- docs/dev/reference/mkinpredict.html | 390 ++++++++++++++++++++++++++++++++++++ 1 file changed, 390 insertions(+) create mode 100644 docs/dev/reference/mkinpredict.html (limited to 'docs/dev/reference/mkinpredict.html') diff --git a/docs/dev/reference/mkinpredict.html b/docs/dev/reference/mkinpredict.html new file mode 100644 index 00000000..e11dacdf --- /dev/null +++ b/docs/dev/reference/mkinpredict.html @@ -0,0 +1,390 @@ + +Produce predictions from a kinetic model using specific parameters — mkinpredict • mkin + Skip to contents + + +
+
+
+ +
+

This function produces a time series for all the observed variables in a +kinetic model as specified by mkinmod, using a specific set of +kinetic parameters and initial values for the state variables.

+
+ +
+

Usage

+
mkinpredict(x, odeparms, odeini, outtimes, ...)
+
+# S3 method for class 'mkinmod'
+mkinpredict(
+  x,
+  odeparms = c(k_parent_sink = 0.1),
+  odeini = c(parent = 100),
+  outtimes = seq(0, 120, by = 0.1),
+  solution_type = "deSolve",
+  use_compiled = "auto",
+  use_symbols = FALSE,
+  method.ode = "lsoda",
+  atol = 1e-08,
+  rtol = 1e-10,
+  maxsteps = 20000L,
+  map_output = TRUE,
+  na_stop = TRUE,
+  ...
+)
+
+# S3 method for class 'mkinfit'
+mkinpredict(
+  x,
+  odeparms = x$bparms.ode,
+  odeini = x$bparms.state,
+  outtimes = seq(0, 120, by = 0.1),
+  solution_type = "deSolve",
+  use_compiled = "auto",
+  method.ode = "lsoda",
+  atol = 1e-08,
+  rtol = 1e-10,
+  map_output = TRUE,
+  ...
+)
+
+ +
+

Arguments

+ + +
x
+

A kinetic model as produced by mkinmod, or a kinetic fit as +fitted by mkinfit. In the latter case, the fitted parameters are used for +the prediction.

+ + +
odeparms
+

A numeric vector specifying the parameters used in the +kinetic model, which is generally defined as a set of ordinary differential +equations.

+ + +
odeini
+

A numeric vector containing the initial values of the state +variables of the model. Note that the state variables can differ from the +observed variables, for example in the case of the SFORB model.

+ + +
outtimes
+

A numeric vector specifying the time points for which model +predictions should be generated.

+ + +
...
+

Further arguments passed to the ode solver in case such a +solver is used.

+ + +
solution_type
+

The method that should be used for producing the +predictions. This should generally be "analytical" if there is only one +observed variable, and usually "deSolve" in the case of several observed +variables. The third possibility "eigen" is fast in comparison to uncompiled +ODE models, but not applicable to some models, e.g. using FOMC for the +parent compound.

+ + +
use_compiled
+

If set to FALSE, no compiled version of the +mkinmod model is used, even if is present.

+ + +
use_symbols
+

If set to TRUE (default), symbol info present in +the mkinmod object is used if available for accessing compiled code

+ + +
method.ode
+

The solution method passed via mkinpredict to deSolve::ode() in +case the solution type is "deSolve" and we are not using compiled code. +When using compiled code, only lsoda is supported.

+ + +
atol
+

Absolute error tolerance, passed to the ode solver.

+ + +
rtol
+

Absolute error tolerance, passed to the ode solver.

+ + +
maxsteps
+

Maximum number of steps, passed to the ode solver.

+ + +
map_output
+

Boolean to specify if the output should list values for +the observed variables (default) or for all state variables (if set to +FALSE). Setting this to FALSE has no effect for analytical solutions, +as these always return mapped output.

+ + +
na_stop
+

Should it be an error if deSolve::ode() returns NaN values

+ +
+
+

Value

+

A matrix with the numeric solution in wide format

+
+
+

Author

+

Johannes Ranke

+
+ +
+

Examples

+

+SFO <- mkinmod(degradinol = mkinsub("SFO"))
+# Compare solution types
+mkinpredict(SFO, c(k_degradinol = 0.3), c(degradinol = 100), 0:20,
+      solution_type = "analytical")
+#>    time  degradinol
+#> 0     0 100.0000000
+#> 1     1  74.0818221
+#> 2     2  54.8811636
+#> 3     3  40.6569660
+#> 4     4  30.1194212
+#> 5     5  22.3130160
+#> 6     6  16.5298888
+#> 7     7  12.2456428
+#> 8     8   9.0717953
+#> 9     9   6.7205513
+#> 10   10   4.9787068
+#> 11   11   3.6883167
+#> 12   12   2.7323722
+#> 13   13   2.0241911
+#> 14   14   1.4995577
+#> 15   15   1.1108997
+#> 16   16   0.8229747
+#> 17   17   0.6096747
+#> 18   18   0.4516581
+#> 19   19   0.3345965
+#> 20   20   0.2478752
+mkinpredict(SFO, c(k_degradinol = 0.3), c(degradinol = 100), 0:20,
+      solution_type = "deSolve")
+#>    time  degradinol
+#> 0     0 100.0000000
+#> 1     1  74.0818221
+#> 2     2  54.8811636
+#> 3     3  40.6569660
+#> 4     4  30.1194212
+#> 5     5  22.3130160
+#> 6     6  16.5298888
+#> 7     7  12.2456428
+#> 8     8   9.0717953
+#> 9     9   6.7205513
+#> 10   10   4.9787068
+#> 11   11   3.6883167
+#> 12   12   2.7323722
+#> 13   13   2.0241911
+#> 14   14   1.4995577
+#> 15   15   1.1108996
+#> 16   16   0.8229747
+#> 17   17   0.6096747
+#> 18   18   0.4516581
+#> 19   19   0.3345965
+#> 20   20   0.2478752
+mkinpredict(SFO, c(k_degradinol = 0.3), c(degradinol = 100), 0:20,
+      solution_type = "deSolve", use_compiled = FALSE)
+#>    time  degradinol
+#> 0     0 100.0000000
+#> 1     1  74.0818221
+#> 2     2  54.8811636
+#> 3     3  40.6569660
+#> 4     4  30.1194212
+#> 5     5  22.3130160
+#> 6     6  16.5298888
+#> 7     7  12.2456428
+#> 8     8   9.0717953
+#> 9     9   6.7205513
+#> 10   10   4.9787068
+#> 11   11   3.6883167
+#> 12   12   2.7323722
+#> 13   13   2.0241911
+#> 14   14   1.4995577
+#> 15   15   1.1108996
+#> 16   16   0.8229747
+#> 17   17   0.6096747
+#> 18   18   0.4516581
+#> 19   19   0.3345965
+#> 20   20   0.2478752
+mkinpredict(SFO, c(k_degradinol = 0.3), c(degradinol = 100), 0:20,
+      solution_type = "eigen")
+#>    time  degradinol
+#> 0     0 100.0000000
+#> 1     1  74.0818221
+#> 2     2  54.8811636
+#> 3     3  40.6569660
+#> 4     4  30.1194212
+#> 5     5  22.3130160
+#> 6     6  16.5298888
+#> 7     7  12.2456428
+#> 8     8   9.0717953
+#> 9     9   6.7205513
+#> 10   10   4.9787068
+#> 11   11   3.6883167
+#> 12   12   2.7323722
+#> 13   13   2.0241911
+#> 14   14   1.4995577
+#> 15   15   1.1108997
+#> 16   16   0.8229747
+#> 17   17   0.6096747
+#> 18   18   0.4516581
+#> 19   19   0.3345965
+#> 20   20   0.2478752
+
+# Compare integration methods to analytical solution
+mkinpredict(SFO, c(k_degradinol = 0.3), c(degradinol = 100), 0:20,
+      solution_type = "analytical")[21,]
+#>       time degradinol 
+#> 20.0000000  0.2478752 
+mkinpredict(SFO, c(k_degradinol = 0.3), c(degradinol = 100), 0:20,
+      method = "lsoda", use_compiled = FALSE)[21,]
+#>       time degradinol 
+#> 20.0000000  0.2478752 
+mkinpredict(SFO, c(k_degradinol = 0.3), c(degradinol = 100), 0:20,
+      method = "ode45", use_compiled = FALSE)[21,]
+#>       time degradinol 
+#> 20.0000000  0.2478752 
+mkinpredict(SFO, c(k_degradinol = 0.3), c(degradinol = 100), 0:20,
+      method = "rk4", use_compiled = FALSE)[21,]
+#>       time degradinol 
+#> 20.0000000  0.2480043 
+# rk4 is not as precise here
+
+# The number of output times used to make a lot of difference until the
+# default for atol was adjusted
+mkinpredict(SFO, c(k_degradinol = 0.3), c(degradinol = 100),
+      seq(0, 20, by = 0.1))[201,]
+#>       time degradinol 
+#> 20.0000000  0.2478752 
+mkinpredict(SFO, c(k_degradinol = 0.3), c(degradinol = 100),
+      seq(0, 20, by = 0.01))[2001,]
+#>       time degradinol 
+#> 20.0000000  0.2478752 
+
+# Comparison of the performance of solution types
+SFO_SFO = mkinmod(parent = list(type = "SFO", to = "m1"),
+                  m1 = list(type = "SFO"), use_of_ff = "max")
+#> Temporary DLL for differentials generated and loaded
+if(require(rbenchmark)) {
+  benchmark(replications = 10, order = "relative", columns = c("test", "relative", "elapsed"),
+    eigen = mkinpredict(SFO_SFO,
+      c(k_parent = 0.15, f_parent_to_m1 = 0.5, k_m1 = 0.01),
+      c(parent = 100, m1 = 0), seq(0, 20, by = 0.1),
+      solution_type = "eigen")[201,],
+    deSolve_compiled = mkinpredict(SFO_SFO,
+      c(k_parent = 0.15, f_parent_to_m1 = 0.5, k_m1 = 0.01),
+      c(parent = 100, m1 = 0), seq(0, 20, by = 0.1),
+      solution_type = "deSolve")[201,],
+    deSolve = mkinpredict(SFO_SFO,
+      c(k_parent = 0.15, f_parent_to_m1 = 0.5, k_m1 = 0.01),
+      c(parent = 100, m1 = 0), seq(0, 20, by = 0.1),
+      solution_type = "deSolve", use_compiled = FALSE)[201,],
+    analytical = mkinpredict(SFO_SFO,
+      c(k_parent = 0.15, f_parent_to_m1 = 0.5, k_m1 = 0.01),
+      c(parent = 100, m1 = 0), seq(0, 20, by = 0.1),
+      solution_type = "analytical", use_compiled = FALSE)[201,])
+}
+#>               test relative elapsed
+#> 2 deSolve_compiled      1.0   0.002
+#> 4       analytical      1.0   0.002
+#> 1            eigen      4.0   0.008
+#> 3          deSolve     30.5   0.061
+
+# \dontrun{
+  # Predict from a fitted model
+  f <- mkinfit(SFO_SFO, FOCUS_2006_C, quiet = TRUE)
+  f <- mkinfit(SFO_SFO, FOCUS_2006_C, quiet = TRUE, solution_type = "deSolve")
+  head(mkinpredict(f))
+#> Error in !is.null(x$symbols) & use_symbols: operations are possible only for numeric, logical or complex types
+# }
+
+
+
+
+ + +
+ + + + + + + -- cgit v1.2.1