Hi Bill,

I think the proposed original solution is the only one if you would like to implement it exactly. May be it can be approximated somehow? What is the real reason for this questions? What is the biology behind the time-variant IV bioavailability? Or what is the model mis-fit that you are trying to fix?

Leonid




On 3/13/2018 9:16 PM, Sebastien Bihorel wrote:
Hi,

I would suggest the following solution which should also work if you want to apply some covariate effect on bioavailability: * On the dataset side, set your RATE variable to -1 and store the actual infusion rates into another variable, eg IVRATE
* On the model side:
$PK
...

; assuming the IV infusion are made in compartment 1
F1 = <whatever time varying function>
R1 = F1*IVRATE

Voila, NONMEM should take care of the dosing in the background as usual.

Sebastien

------------------------------------------------------------------------
*From: *"Bill Denney" <wden...@humanpredictions.com>
*To: *"NMUsers" <nmusers@globomaxnm.com>
*Sent: *Tuesday, March 13, 2018 8:58:41 PM
*Subject: *[NMusers] Time-Varying Bioavailability on Zero-Order Infusion

Hi NONMEMers,

Is there a good way to assign a time-varying bioavailabilty on a zero-order rate of infusion in NONMEM?  The best I’ve been able to come up with is something like the below.  It seems like something that should be easier than what I’m doing below (I adjusted it from the real example as I was typing it into the email—I could have introduced a bug in the process).  And importantly, -9998 is well before any time in my database.

(dosing into CMT=1 with an IV infusion)

$MODEL

COMP=(CENTRAL DEFDOSE DEFOBS)    ; central

COMP=(P1)                        ; peripheral 1

COMP=(P2)                        ; peripheral 2

$PK

   ; Normal stuff and ...

   ; Record the dosing time

   IF (NEWIND.LT.2) THEN

     TDOSE = -9999

     DOSEEND = -9998

     DOSE = -999

     DOSERATE = 0

   ENDIF

   IF ((EVID.EQ.1 .OR. EVID.EQ.4) .AND. RATE.GT.0) THEN

     TDOSE = TIME

     DOSEEND = TIME + AMT/RATE

     DOSERATE=RATE

     MTDIFF=1

   ENDIF

   MTIME(1)=TDOSE

   MTIME(2)=DOSEEND

  F1 = 0 ; Bioavailability is zero so that the $DES block has full control over the rate.

   RATEADJTAU=THETA(10)

   RATEADJMAX=THETA(11)

$DES

   ; Manually control the infusion

   RATEIN = 0

   IF (MTIME(1).LE.T .AND. T.LE.MTIME(2)) THEN

     RATEADJCALC = RATEADJMAX * EXP(-(T – MTIME(1)) * RATEADJTAU)

     RATEIN = DOSERATE - RATEADJCALC

   ENDIF

   DADT(1) = RATEIN - K10*A(1) - K12*A(1) + K21*A(2) - K13*A(1) + K31*A(3)

   DADT(2) =                     K12*A(1) - K21*A(2)

   DADT(3) =                                           K13*A(1) - K31*A(3)

Thanks,

Bill



Reply via email to