【问题标题】:Extracting Results from odeModel?从 odeModel 中提取结果?
【发布时间】:2020-04-14 15:11:00
【问题描述】:

我尝试将 df 对象作为我的输出没有成功(这样我就可以对每个图表进行子集化/自定义)。我还读到可以使用“out”函数提取结果,但我还没有让它工作。有人可以帮我解决这个问题吗?

'''

library(simecol)

library(latticeExtra)

Figure_7B <- odeModel(
main = function(time, init, parms) {
with(as.list(c(init, parms)),{

# Computing derivatives
dm  <- -k1*eT*m         
dmP <-  k1*eT*m    
 dE  <- -k2*E*mP         
 dEP <-  k2*mP*E  + (k3*EP)*(dE - TE - S) + k3r*TE 
 dDE <- +k3*EP*DE - k3r*TE
 dTE <-  (k3*EP)*(DE - TE - S) - k3r*TE - k7*TE*A 
 dME <-  k4*TE - d1*ME
 dDA <- +k5*EP*DA - k5r*TA
 dTA <-  k5*EP*DA - k5r*TA
 dMA <-  (k6*EP)/(EP + k5) - d2*MA
 dA  <-  k8*MA + k7*TE*A + d3*A
 dS  <-  k7*TE*A

return(list(c(dm, dmP, dE, dEP, dDE, dTE, dME, dDA, dTA, dMA, dA, dS)))

})
},

# Set parameters or constants

  parms = c(k1 = 8.3e-3,
        eT = 100, 
        k2 = 1.28e5,
        k3 = 1e5, 
        k3r = 5e-2, 
        k4 = 6.89e-15,
        k5  = 0.5e-6, 
        k5r = 5e-2, 
        k6 = 1.03e-15, 
        k7 = 1e5,
        k8 = 0.25, 
        d1 = 8.89e-4,      
        d2 = 2.36e-4,     
        d3 = 2.36e-4),

# Set integrations times
  times = c(from=0, to=10, by = 0.25),

# Set initial state
  init = c(
m = 130e-7,
mP = 0,  
E = 130e-7, 
EP = 0,   
DE = 3.32e-11, 
TE = 0,  
ME = 1e-12, 
DA = 3.32e-11, 
TA = 0, 
MA = 0,
A = 0, 
S = 0),


solver = "lsoda"

)

'''

'''

library(deSolve)

Figure_7B <- sim(Figure_7B)

plot(Figure_7B)

'''

【问题讨论】:

  • 你可以把function(time, init, parms)改成function(m, init, parms)
  • 不,我不这么认为。为什么要这样做?

标签: r extract ode


【解决方案1】:

尝试以下方法:

Figure_7B <- sim(Figure_7B)
plot(Figure_7B)
df <- out(Figure_7B)
head(df)

解释:sim() 返回的对象包含所有输入(完整的 Figure_7B 模型)加上输出。模型的一部分可以用槽访问器函数提取,例如:

times(Figure_7B)
main(Figure_7B)

out(Figure_7B)

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 2016-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-11
    • 1970-01-01
    • 2015-09-09
    相关资源
    最近更新 更多