mkinpredict(mkinmod, odeparms, odeini, outtimes, solution_type = "deSolve", use_compiled = "auto", method.ode = "lsoda", atol = 1e-08, rtol = 1e-10, map_output = TRUE, ...)
mkinmod
.
mkinpredict
to
ode
in case the solution type is "deSolve". The default
"lsoda" is performant, but sometimes fails to converge.
FALSE
, no compiled version of the mkinmod
model is used, even if is present.
ode
. Default is 1e-8,
lower than in lsoda
.
ode
. Default is 1e-10,
much lower than in lsoda
.
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.
ode
.
SFO <- mkinmod(degradinol = list(type = "SFO")) # Compare solution types mkinpredict(SFO, c(k_degradinol_sink = 0.3), c(degradinol = 100), 0:20, solution_type = "analytical")time degradinol 1 0 100.0000000 2 1 74.0818221 3 2 54.8811636 4 3 40.6569660 5 4 30.1194212 6 5 22.3130160 7 6 16.5298888 8 7 12.2456428 9 8 9.0717953 10 9 6.7205513 11 10 4.9787068 12 11 3.6883167 13 12 2.7323722 14 13 2.0241911 15 14 1.4995577 16 15 1.1108997 17 16 0.8229747 18 17 0.6096747 19 18 0.4516581 20 19 0.3345965 21 20 0.2478752mkinpredict(SFO, c(k_degradinol_sink = 0.3), c(degradinol = 100), 0:20, solution_type = "deSolve")time degradinol 1 0 100.0000000 2 1 74.0818221 3 2 54.8811636 4 3 40.6569660 5 4 30.1194212 6 5 22.3130160 7 6 16.5298888 8 7 12.2456428 9 8 9.0717953 10 9 6.7205513 11 10 4.9787068 12 11 3.6883167 13 12 2.7323722 14 13 2.0241911 15 14 1.4995577 16 15 1.1108996 17 16 0.8229747 18 17 0.6096747 19 18 0.4516581 20 19 0.3345965 21 20 0.2478752mkinpredict(SFO, c(k_degradinol_sink = 0.3), c(degradinol = 100), 0:20, solution_type = "deSolve", use_compiled = FALSE)time degradinol 1 0 100.0000000 2 1 74.0818221 3 2 54.8811636 4 3 40.6569660 5 4 30.1194212 6 5 22.3130160 7 6 16.5298888 8 7 12.2456428 9 8 9.0717953 10 9 6.7205513 11 10 4.9787068 12 11 3.6883167 13 12 2.7323722 14 13 2.0241911 15 14 1.4995577 16 15 1.1108996 17 16 0.8229747 18 17 0.6096747 19 18 0.4516581 20 19 0.3345965 21 20 0.2478752mkinpredict(SFO, c(k_degradinol_sink = 0.3), c(degradinol = 100), 0:20, solution_type = "eigen")time degradinol 1 0 100.0000000 2 1 74.0818221 3 2 54.8811636 4 3 40.6569660 5 4 30.1194212 6 5 22.3130160 7 6 16.5298888 8 7 12.2456428 9 8 9.0717953 10 9 6.7205513 11 10 4.9787068 12 11 3.6883167 13 12 2.7323722 14 13 2.0241911 15 14 1.4995577 16 15 1.1108997 17 16 0.8229747 18 17 0.6096747 19 18 0.4516581 20 19 0.3345965 21 20 0.2478752# Compare integration methods to analytical solution mkinpredict(SFO, c(k_degradinol_sink = 0.3), c(degradinol = 100), 0:20, solution_type = "analytical")[21,]time degradinol 21 20 0.2478752mkinpredict(SFO, c(k_degradinol_sink = 0.3), c(degradinol = 100), 0:20, method = "lsoda")[21,]time degradinol 21 20 0.2478752mkinpredict(SFO, c(k_degradinol_sink = 0.3), c(degradinol = 100), 0:20, method = "ode45")[21,]time degradinol 21 20 0.2478752mkinpredict(SFO, c(k_degradinol_sink = 0.3), c(degradinol = 100), 0:20, method = "rk4")[21,]time degradinol 21 20 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_sink = 0.3), c(degradinol = 100), seq(0, 20, by = 0.1))[201,]time degradinol 201 20 0.2478752mkinpredict(SFO, c(k_degradinol_sink = 0.3), c(degradinol = 100), seq(0, 20, by = 0.01))[2001,]time degradinol 2001 20 0.2478752# Check compiled model versions - they are faster than the eigenvalue based solutions! SFO_SFO = mkinmod(parent = list(type = "SFO", to = "m1"), m1 = list(type = "SFO"))Successfully compiled differential equation model from auto-generated C code.system.time( print(mkinpredict(SFO_SFO, c(k_parent_m1 = 0.05, k_parent_sink = 0.1, k_m1_sink = 0.01), c(parent = 100, m1 = 0), seq(0, 20, by = 0.1), solution_type = "eigen")[201,]))time parent m1 201 20 4.978707 27.46227user system elapsed 0.028 0.044 0.011system.time( print(mkinpredict(SFO_SFO, c(k_parent_m1 = 0.05, k_parent_sink = 0.1, k_m1_sink = 0.01), c(parent = 100, m1 = 0), seq(0, 20, by = 0.1), solution_type = "deSolve")[201,]))time parent m1 201 20 4.978707 27.46227user system elapsed 0.000 0.004 0.004system.time( print(mkinpredict(SFO_SFO, c(k_parent_m1 = 0.05, k_parent_sink = 0.1, k_m1_sink = 0.01), c(parent = 100, m1 = 0), seq(0, 20, by = 0.1), solution_type = "deSolve", use_compiled = FALSE)[201,]))time parent m1 201 20 4.978707 27.46227user system elapsed 0.136 0.004 0.138