- Contemporary messages sorted: [ by date ] [ by thread ] [ by subject ] [ by author ] [ by messages with attachments ]

From: Devin Pastoor <devin.pastoor_at_gmail.com>

Date: Thu, 24 Aug 2017 23:07:33 +0000

Similar to Bill, I also have an inelegant, but workable, solution, which is

to brute force the ignore times by templating them in R.

For example, you can use a simple glue template to churn out ignore

statements. For simplicity this could then be then just copied into control

streams.

library(whisker)

all_times <- c(0, 1, 2, 4, 6, 8, 10, 12, 14, 16, 20, 24)keep_times <-

c(0, 1, 2, 4, 6, 24)drop_times <- all_times[!(all_times %in%

keep_times)]glue::glue(

"IGNORE=(TIME.EQN.{time})", time = drop_times

)#> IGNORE=(TIME.EQN.8)#> IGNORE=(TIME.EQN.10)#>

IGNORE=(TIME.EQN.12)#> IGNORE=(TIME.EQN.14)#> IGNORE=(TIME.EQN.16)#>

IGNORE=(TIME.EQN.20)

# make multiple time scenarios and generate the ignores for all of

them in one goscenarios = list(

c(0, 1, 2, 4, 6, 24),

c(0, 2, 4, 8, 24))

lapply(scenarios, function(.s) {

all_times <- c(0, 1, 2, 4, 6, 8, 10, 12, 14, 16, 20, 24)

keep_times <- .s

drop_times <- all_times[!(all_times %in% keep_times)]

glue::glue(

"IGNORE=(TIME.EQN.{time})", time = drop_times

)})#> [[1]]#> IGNORE=(TIME.EQN.8)#> IGNORE=(TIME.EQN.10)#>

IGNORE=(TIME.EQN.12)#> IGNORE=(TIME.EQN.14)#> IGNORE=(TIME.EQN.16)#>

IGNORE=(TIME.EQN.20)#> #> [[2]]#> IGNORE=(TIME.EQN.1)#>

IGNORE=(TIME.EQN.6)#> IGNORE=(TIME.EQN.10)#> IGNORE=(TIME.EQN.12)#>

IGNORE=(TIME.EQN.14)#> IGNORE=(TIME.EQN.16)#> IGNORE=(TIME.EQN.20)

If you want something more automated and powerful, at the expense of more R

code, you can use the whisker library to actually use full templates. I've

done some bayesian prior sensitivity analysis generating 1000's of control

streams to great success that way. If this is of interest, speak up and I

can provide a more complete example.

Cheers,

Devin

On Thu, Aug 24, 2017 at 6:48 PM Bill Denney <wdenney_at_humanpredictions.com>

wrote:

*> Hi Dennis,
*

*>
*

*>
*

*>
*

*> I don’t have an elegant solution for you (and I’ve been p=
*

ining for the use

*> of combined Boolean operations like “TIME.GT.5.9.AND.TIME.LT.6.1=
*

” for a

*> long time).
*

*>
*

*>
*

*>
*

*> An inelegant solution could be to run the model once with a write
*

*> statement to see if you can identify the value like 6.0000001 and use it.
*

*> That would probably be fragile to different processor/compiler/math libra=
*

ry

*> combinations, so I’d probably end up making the additional indica=
*

tor column

*> for certainty.
*

*>
*

*>
*

*> Thanks,
*

*>
*

*>
*

*>
*

*> Bill
*

*>
*

*>
*

*>
*

*> *From:* owner-nmusers_at_globomaxnm.com [mailto:owner-nmusers_at_globomaxnm.com=
*

]

*> *On Behalf Of *Dennis Fisher
*

*> *Sent:* Thursday, August 24, 2017 6:16 PM
*

*> *To:* nmusers_at_globomaxnm.com
*

*> *Subject:* [NMusers] Use of ACCEPT in $DATA
*

*>
*

*>
*

*>
*

*> NONMEM 7.4.1
*

*>
*

*>
*

*>
*

*> Colleagues
*

*>
*

*>
*

*>
*

*> I am trying to use the ACCEPT option in $DATA in order to select a subset
*

*> of records (to evaluate the impact of the # of samples/subject on
*

*> confidence intervals).
*

*>
*

*>
*

*>
*

*> I used the following code:
*

*>
*

*> ACCEPT=(TIME=0, TIME=1, TIME=2, TIME=4, TIME=6=
*

, TIME=24)

*>
*

*>
*

*>
*

*> NMTRAN then creates a dataset but — to my surprise — TIME=
*

=6 is not in the

*> dataset (all the others are).
*

*>
*

*>
*

*>
*

*> I am copying the first few rows of the input dataset so that you can see
*

*> what is being provided to NMTRAN:
*

*>
*

*>
*

*>
*

*> ID,AGE,MONTHS,SEX,WT,AMT,RATE,*TIME*
*

*> ,EVID,MDV,REPLICATE,IPRED,CWRES,DV,PRED,RES,WRES
*

*> 1101,12,144,1,30.054,210.38,841.51,0,1,1,1,0,0,0,0,0,0
*

*> 1101,12,144,1,30.054,0,0,1,0,0,1,187.42,0,179.28,199.26,-19.979,0
*

*> 1101,12,144,1,30.054,0,0,2,0,0,1,180.92,0,187.92,194.09,-6.1659,0
*

*> 1101,12,144,1,30.054,0,0,4,0,0,1,169.84,0,177.66,184.37,-6.712,0
*

*> 1101,12,144,1,30.054,0,0,*6*,0,0,1,160.61,0,153.43,175.39,-21.96,0
*

*>
*

*>
*

*>
*

*> The underlined / boldfaced value (6) in the final row is the problem.
*

*>
*

*>
*

*>
*

*> I assume that NMTRAN is reading that value as something other than 6.0
*

*> (e.g., 6.000001) and thereby omitting it.
*

*>
*

*>
*

*>
*

*> I have reviewed NMHELP to see if there is some other way to accomplish
*

*> this. Ideally, there would be something like:
*

*>
*

*> TIME.GT.5.9.AND.TIME.LT.6.1
*

*>
*

*> but that does not appear to be supported.
*

*>
*

*>
*

*>
*

*> The alternative is to modify the dataset to include many possible MDV/EVI=
*

D

*> columns. However, it would be more elegant to do this in the control
*

*> stream.
*

*>
*

*> Or, if there is some way to find out the exact value that NMTRAN sees, I
*

*> could specify that value.
*

*>
*

*>
*

*>
*

*> Any help would be appreciated.
*

*>
*

*>
*

*>
*

*> Dennis
*

*>
*

*>
*

*>
*

*> Dennis Fisher MD
*

*> P < (The "P Less Than" Company)
*

*> Phone / Fax: 1-866-PLessThan (1-866-753-7784 <(866)%20753-7784>)
*

*> www.PLessThan.com <http://www.plessthan.com/>
*

*>
*

*>
*

*>
*

*>
*

*>
*

*>
*

*>
*

Received on Thu Aug 24 2017 - 19:07:33 EDT

Date: Thu, 24 Aug 2017 23:07:33 +0000

Similar to Bill, I also have an inelegant, but workable, solution, which is

to brute force the ignore times by templating them in R.

For example, you can use a simple glue template to churn out ignore

statements. For simplicity this could then be then just copied into control

streams.

library(whisker)

all_times <- c(0, 1, 2, 4, 6, 8, 10, 12, 14, 16, 20, 24)keep_times <-

c(0, 1, 2, 4, 6, 24)drop_times <- all_times[!(all_times %in%

keep_times)]glue::glue(

"IGNORE=(TIME.EQN.{time})", time = drop_times

)#> IGNORE=(TIME.EQN.8)#> IGNORE=(TIME.EQN.10)#>

IGNORE=(TIME.EQN.12)#> IGNORE=(TIME.EQN.14)#> IGNORE=(TIME.EQN.16)#>

IGNORE=(TIME.EQN.20)

# make multiple time scenarios and generate the ignores for all of

them in one goscenarios = list(

c(0, 1, 2, 4, 6, 24),

c(0, 2, 4, 8, 24))

lapply(scenarios, function(.s) {

all_times <- c(0, 1, 2, 4, 6, 8, 10, 12, 14, 16, 20, 24)

keep_times <- .s

drop_times <- all_times[!(all_times %in% keep_times)]

glue::glue(

"IGNORE=(TIME.EQN.{time})", time = drop_times

)})#> [[1]]#> IGNORE=(TIME.EQN.8)#> IGNORE=(TIME.EQN.10)#>

IGNORE=(TIME.EQN.12)#> IGNORE=(TIME.EQN.14)#> IGNORE=(TIME.EQN.16)#>

IGNORE=(TIME.EQN.20)#> #> [[2]]#> IGNORE=(TIME.EQN.1)#>

IGNORE=(TIME.EQN.6)#> IGNORE=(TIME.EQN.10)#> IGNORE=(TIME.EQN.12)#>

IGNORE=(TIME.EQN.14)#> IGNORE=(TIME.EQN.16)#> IGNORE=(TIME.EQN.20)

If you want something more automated and powerful, at the expense of more R

code, you can use the whisker library to actually use full templates. I've

done some bayesian prior sensitivity analysis generating 1000's of control

streams to great success that way. If this is of interest, speak up and I

can provide a more complete example.

Cheers,

Devin

On Thu, Aug 24, 2017 at 6:48 PM Bill Denney <wdenney_at_humanpredictions.com>

wrote:

ining for the use

” for a

ry

tor column

]

, TIME=24)

=6 is not in the

D

Received on Thu Aug 24 2017 - 19:07:33 EDT