Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

rxode2 covariate sync #581

Closed
mattfidler opened this issue Sep 12, 2023 · 3 comments · Fixed by #582
Closed

rxode2 covariate sync #581

mattfidler opened this issue Sep 12, 2023 · 3 comments · Fixed by #582

Comments

@mattfidler
Copy link
Member

mattfidler commented Sep 12, 2023

library(rxode2)
#> Warning: package 'rxode2' was built under R version 4.3.1
#> rxode2 2.0.13 using 4 threads (see ?getRxThreads)
#>   no cache: create with `rxCreateCache()`

dat <- structure(list(ID = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L), TIME = c(0, 0, 0, 0.5, 0.5, 1, 1, 
1.5, 1.5, 2, 2, 2.5, 2.5, 3, 3, 3.5, 3.5, 4, 4, 4.5, 4.5, 5, 
5, 5.5, 5.5, 6, 6, 0, 0, 0, 0.5, 0.5, 1, 1, 1.5, 1.5, 2, 2, 2.5, 
2.5, 3, 3, 3.5, 3.5, 4, 4, 4.5, 4.5, 5, 5, 5.5, 5.5, 6, 6, 0, 
0, 0, 0.5, 0.5, 1, 1, 1.5, 1.5, 2, 2, 2.5, 2.5, 3, 3, 3.5, 3.5, 
4, 4, 4.5, 4.5, 5, 5, 5.5, 5.5, 6, 6), EVID = c(80101L, 60101L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 80101L, 60101L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 80101L, 60101L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L), AMT = c(10, 10, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, 10, 10, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 10, 10, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA), II = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0), DV = c(NA, NA, 0, 3.8, 0.9, 5.8, 
2.5, 3.2, 3.2, 1.8, 2.9, 1, 2.2, 0.5, 1.6, 0.3, 1.1, 0.2, 0.8, 
0.1, 0.5, 0, 0.3, 0, 0.2, 0, 0.1, NA, NA, 0, 3.4, 0.7, 7.3, 2.4, 
2.8, 2.5, 1.3, 2.7, 1, 1.6, 0.6, 1.1, 0.3, 0.8, 0.2, 0.8, 0.1, 
0.5, 0, 0.3, 0, 0.2, 0, 0.2, NA, NA, 0, 2.8, 1.1, 6.7, 2.7, 3.9, 
3.6, 1.5, 3.1, 0.7, 2.4, 0.5, 1.5, 0.3, 1.2, 0.1, 0.5, 0.1, 0.6, 
0.1, 0.4, 0, 0.2, 0, 0.2), CMT = c(1L, 1L, 4L, 3L, 4L, 3L, 4L, 
3L, 4L, 3L, 4L, 3L, 4L, 3L, 4L, 3L, 4L, 3L, 4L, 3L, 4L, 3L, 4L, 
3L, 4L, 3L, 4L, 1L, 1L, 4L, 3L, 4L, 3L, 4L, 3L, 4L, 3L, 4L, 3L, 
4L, 3L, 4L, 3L, 4L, 3L, 4L, 3L, 4L, 3L, 4L, 3L, 4L, 3L, 4L, 1L, 
1L, 4L, 3L, 4L, 3L, 4L, 3L, 4L, 3L, 4L, 3L, 4L, 3L, 4L, 3L, 4L, 
3L, 4L, 3L, 4L, 3L, 4L, 3L, 4L, 3L, 4L), nlmixrRowNums = c(1, 
NA, 14, 2, 15, 3, 16, 4, 17, 5, 18, 6, 19, 7, 20, 8, 21, 9, 22, 
10, 23, 11, 24, 12, 25, 13, 26, 27, NA, 40, 28, 41, 29, 42, 30, 
43, 31, 44, 32, 45, 33, 46, 34, 47, 35, 48, 36, 49, 37, 50, 38, 
51, 39, 52, 53, NA, 66, 54, 67, 55, 68, 56, 69, 57, 70, 58, 71, 
59, 72, 60, 73, 61, 74, 62, 75, 63, 76, 64, 77, 65, 78)), class = "data.frame", row.names = c(NA, 
-81L))

par <- structure(c(0, 0, 0, 0.693147180559945, 0.693147180559945, 0.693147180559945, 
2.30258509299405, 2.30258509299405, 2.30258509299405, 2.30258509299405, 
2.30258509299405, 2.30258509299405, 0, 0, 0, 1, 1, 1, 1, 1, 1, 
-1.86782087447842, 0, 0, -2.44813462994314, 0, 0, 0.0831313226164289, 
0, 0, -2.28843604434224, 0, 0, 1.97816823869187e-05, 0, 0), dim = c(3L, 
12L), dimnames = list(NULL, c("THETA[1]", "THETA[2]", "THETA[3]", 
"THETA[4]", "THETA[5]", "THETA[6]", "THETA[7]", "ETA[1]", "ETA[2]", 
"ETA[3]", "ETA[4]", "ETA[5]")))

rx <- rxode2({
    param(THETA[1], THETA[2], THETA[3], THETA[4], THETA[5], THETA[6], 
        THETA[7], ETA[1], ETA[2], ETA[3], ETA[4], ETA[5])
    cmt(center)
    cmt(meta)
    rx_expr_5 ~ ETA[3] + THETA[1]
    rx_expr_6 ~ ETA[1] + THETA[2]
    rx_expr_7 ~ ETA[2] + THETA[4]
    rx_expr_10 ~ exp(rx_expr_5)
    d/dt(center) = -rx_expr_10 * center - exp(rx_expr_6 - (rx_expr_7)) * 
        center
    rx_expr_8 ~ ETA[5] + THETA[5]
    rx_expr_11 ~ exp(rx_expr_8)
    dur(center) = rx_expr_11
    rx_expr_9 ~ ETA[4] + THETA[3]
    d/dt(meta) = rx_expr_10 * center - exp(rx_expr_9 - (rx_expr_7)) * 
        meta
    center(0) = 0
    meta(0) = 0
    rx_expr_0 ~ CMT == 4
    rx_expr_1 ~ CMT == 3
    rx_expr_2 ~ 1 - (rx_expr_0)
    rx_yj_ ~ 2 * (rx_expr_2) * (rx_expr_1) + 2 * (rx_expr_0)
    rx_expr_3 ~ (rx_expr_0)
    rx_expr_4 ~ (rx_expr_2)
    rx_expr_12 ~ rx_expr_4 * (rx_expr_1)
    rx_lambda_ ~ rx_expr_12 + rx_expr_3
    rx_hi_ ~ rx_expr_12 + rx_expr_3
    rx_low_ ~ 0
    rx_expr_13 ~ exp(-(rx_expr_7))
    rx_expr_14 ~ rx_expr_13 * meta
    rx_expr_15 ~ rx_expr_13 * center
    rx_expr_17 ~ rx_expr_14 * (rx_expr_0)
    rx_expr_18 ~ rx_expr_15 * (rx_expr_2)
    rx_expr_19 ~ rx_expr_18 * (rx_expr_1)
    rx_pred_ = (rx_expr_0) * (rx_expr_17 + rx_expr_19) + rx_expr_18 * 
        Rx_pow_di((rx_expr_1), 2)
    rx_r_ = (rx_expr_0) * Rx_pow_di(((rx_expr_17 + rx_expr_19) * 
        THETA[7]), 2) + (rx_expr_2) * Rx_pow_di((rx_expr_15 * 
        THETA[6] * (rx_expr_1)), 2) * (rx_expr_1)
    tkm = THETA[1]
    tcl = THETA[2]
    tclm = THETA[3]
    tv = THETA[4]
    tdur0 = THETA[5]
    prop.err = THETA[6]
    prop.err2 = THETA[7]
    eta.cl = ETA[1]
    eta.v = ETA[2]
    eta.km = ETA[3]
    eta.clm = ETA[4]
    eta.dur0 = ETA[5]
    km = rx_expr_10
    cl = exp(rx_expr_6)
    clm = exp(rx_expr_9)
    v = exp(rx_expr_7)
    dur0 = rx_expr_11
    cp = rx_expr_15
    cm = rx_expr_14
    tad = tad()
    dosenum = dosenum()
    cmt(cp)
    cmt(cm)
    dvid(3, 4)
}) 
#> using C compiler: 'gcc.exe (GCC) 12.2.0'

s <- rxSolve(rx, dat, par, returnType="data.frame", keep=c("nlmixrRowNums", "DV"), subsetNonmem=TRUE, addCov=TRUE)

s %>% dplyr::filter(time==0.5) %>% dplyr::pull(CMT)
#> [1] 4 4 4 4 4 4

Created on 2023-09-11 with reprex v2.0.2

Smaller reprex

@mattfidler
Copy link
Member Author

Addresses nlmixr2/nlmixr2est#394

@mattfidler
Copy link
Member Author

Should have 3 and 4

@mattfidler
Copy link
Member Author

FYI @Lee21A

@mattfidler mattfidler linked a pull request Sep 12, 2023 that will close this issue
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant