RE: Weibull Absorption Simulation - Multiple Doses

From: Burgess Freeman Date: April 28, 2010 technical Source: mail-archive.com
Dear Leonid, Many thanks for your help here. This was sort of what I thought needed to be done, but was unsure how to implement. I tried method #5 for the simulation, and it worked adequately. However, I found it a bit clumsy having to define each dose time in the control stream (TIME2=24, TIME3=48). This method also means doing the QD and BID simulations separately, unless you write more code in the control stream to account for it. For me, it was just easier to do the two sims separately. Once again, thanks for your assistance. Burgess Burgess Freeman, Pharm.D. Sr. Research Scientist Drug Metabolism, Pharmacokinetics & Clinical Pharmacology (DMPKCP) Array BioPharma, Inc.
Quoted reply history
-----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of Leonid Gibiansky Sent: Saturday, April 24, 2010 9:44 PM To: Freeman, Burgess; nmusers Subject: Re: [NMusers] Weibull Absorption Simulation - Multiple Doses Dear Burgess, Several points: 1. I am not sure whether your Weibull function is correctly implemented (I think, the original post that you used contained an error), see discussion in http://www.boomer.org/pkin/PK09/PK2009395.html and references cited there. I would rather call this form "Weibull": DADT(1)=-BIO*DOSE*(BETA/ALPHA)*((T/ALPHA)**(BETA-1))*EXP(-(T/ALPHA)**BET A) (assuming bioavailability BIO and dose DOSE). In this case, cumulative amount of the drug absorbed by time T is equal to CumAMT(T) = BIO*DOSE*(1-exp(-(t/alpha)^beta)) which is a Weibull function. For single (but not repeated!) doses, you can use dA1/dt = -A(1)*(beta/alpha)*(t/alpha)^(beta-1) (as explained by Jee Eun in http://www.boomer.org/pkin/PK09/PK2009395.html ) However, the depot compartment is actually not needed, you can use $DES WRATE=BIO*DOSE*(BETA/ALPHA)*((T/ALPHA)**(BETA-1))*EXP(-(T/ALPHA)**BETA) DADT(1)=WRATE-K10*A(1)-K12*A(1)+K21*A(2) DADT(2)=K12*A(1)-K21*A(2) ==================== 2. Multiple doses is more tricky to implement. You need to trace each dose separately. Below is an example (for Weibull function as in (1)) for three doses D1 D2 D3 at times 0 TIME2 TIME3 $DES TM1=T WR1=BIO*D1*(BETA/ALPHA)*((TM1/ALPHA)**(BETA-1))*EXP(-(TM1/ALPHA)**BETA) WR2=0 IF(T.GT.TIME2) THEN TM2=T-TIME2 WR2=BIO*D2*(BETA/ALPHA)*((TM2/ALPHA)**(BETA-1))*EXP(-(TM2/ALPHA)**BETA) ENDIF WR3=0 IF(T.GT.TIME2) THEN TM3=T-TIME3 WR3=BIO*D3*(BETA/ALPHA)*((TM3/ALPHA)**(BETA-1))*EXP(-(TM3/ALPHA)**BETA) ENDIF WRATE = WR1+WR2+WR3 DADT(1)=WRATE-K10*A(1)-K12*A(1)+K21*A(2) DADT(2)=K12*A(1)-K21*A(2) ==================== 3. If you are happy with your current model (even if this is not exactly Weibull), you can implement multiple-dose case using multiple compartments. Below is the same example as in (2) implemented for your (not-exactly-Weibull) model $DES TM1=T WR1=A(1)*(BETA/ALPHA)*((TM1/ALPHA)**(BETA-1))*EXP(-(TM1/ALPHA)**BETA) WR4 = 0 IF(T.GT.TIME2) THEN TM2=T-TIME2 WR4=A(4)*(BETA/ALPHA)*((TM2/ALPHA)**(BETA-1))*EXP(-(TM2/ALPHA)**BETA) ENDIF WR5 = 0 IF(T.GT.TIME3) THEN TM3=T-TIME3 WR5=A(5)*(BETA/ALPHA)*((TM3/ALPHA)**(BETA-1))*EXP(-(TM3/ALPHA)**BETA) ENDIF WRATE=WR1+WR2+WR3 DADT(1)=-WR1 DADT(2)=WRATE-K20*A(2)-K23*A(2)+K32*A(3) DADT(3)=K23*A(2)-K32*A(3) DADT(4)=-WR4 DADT(5)=-WR5 Doses D1, D2, D3 should be send (via data file) to compartments 1, 4, and 5 respectively (at times 0 TIME2 and TIME3) ==================== 4. If you have more doses, you need to add more compartments. At some point, you may start "recycling" depot compartments, assuming that by the time of the next dose, amount in the depot compartment is negligible. If you can assume that by the time of the next dose all previous-dose amount is absorbed, you can implement model in (2) as $DES TM1=T IF(T.GT.TIME2) TM1=T-TIME2 IF(T.GT.TIME3) TM1=T-TIME3 WRATE=BIO*DOSE*(BETA/ALPHA)*((TM1/ALPHA)**(BETA-1))*EXP(-(TM1/ALPHA)**BE TA) DADT(1)=WRATE-K10*A(1)-K12*A(1)+K21*A(2) DADT(2)=K12*A(1)-K21*A(2) where I assumed DOSE=D1=D2=D3 ==================== 5. Similarly, if you assume rapid (before the next dose) absorption, code in (3) can be modified as $DES TM1=T IF(T.GT.TIME2) TM1=T-TIME2 IF(T.GT.TIME3) TM1=T-TIME3 WR1=A(1)*(BETA/ALPHA)*((TM1/ALPHA)**(BETA-1))*EXP(-(TM1/ALPHA)**BETA) DADT(1)=-WR1 DADT(2)=WR1-K20*A(2)-K23*A(2)+K32*A(3) DADT(3)=K23*A(2)-K32*A(3) with doses D1 D2 D3 placed into compartment 1 at times 0, TIME2 and TIME3. ==================== This message contains a lot of code, and it was NOT tested. There could be typos, so please, before you use it, check everything to follow what is going on. Thanks Leonid -------------------------------------- Leonid Gibiansky, Ph.D. President, QuantPharm LLC web: www.quantpharm.com e-mail: LGibiansky at quantpharm.com tel: (301) 767 5566 Freeman, Burgess wrote: > Dear NMUsers, > > I recently modeled some single dose oral data in NONMEM, in which a 2 compartment Weibull absorption model described the data best. Now I'm trying to simulate either QD or BID dosing to obtain predicted Ct profiles on Day 8. For some reason the simulation doesn't acknowledge any dosing past the first dose at time 0, despite doses being present in the data file. I think it has something to do with $DES, and not specifying doses and dose times in the control stream. See below for my control stream. I found a message thread in the archive with some advice on this from Nick Holford ( http://www.cognigencorp.com/nonmem/current/2007-April/0094.html) but even after implementing his suggestion, I still cannot successfully simulate multiple dosing. Any help or insight would be appreciated. Thanks. > > Burgess Freeman, Pharm.D. > Sr. Research Scientist > Drug Metabolism, Pharmacokinetics & Clinical Pharmacology (DMPKCP) > Array BioPharma, Inc. > Boulder, CO 80301 > > $PROBLEM run4.mod - SIMULATION 2COMPWB T, IIV+PROP, FOCE-I w g95 > ; http://www.cognigencorp.com/nonmem/current/2007-April/0094.html > $INPUT ID TIME DV AMT CMT EVID MDV GRP > $DATA sim.csv IGNORE # > $SUBROUTINES ADVAN6 TOL=4 > > $MODEL NCOMP=3 > COMP=(DEPOT,DEFDOSE) COMP=(CENTRAL,DEFOBS) COMP=(PERHIPH) > > $PK > TCL=THETA(1) > TV2=THETA(2) > TQ=THETA(3) > TV3=THETA(4) > > ;Weibull parameters > TBETA=THETA(5) > TALPHA=THETA(6) > > CL=TCL*EXP(ETA(1)) > IF (ABS(ETA(1)).GT.100.) EXIT 1 100 > V2=TV2*EXP(ETA(2)) > IF (ABS(ETA(2)).GT.100.) EXIT 1 200 > Q=TQ*EXP(ETA(3)) > IF (ABS(ETA(3)).GT.100.) EXIT 1 300 > V3=TV3*EXP(ETA(4)) > IF (ABS(ETA(4)).GT.100.) EXIT 1 400 > BETA=TBETA*EXP(ETA(5)) > IF (ABS(ETA(5)).GT.100.) EXIT 1 500 > ALPHA=TALPHA*EXP(ETA(6)) > IF (ABS(ETA(6)).GT.100.) EXIT 1 600 > > S2=V2 > S3=V3 > K20=CL/V2 > K23=Q/V2 > K32=Q/V3 > > $DES > DADT(1)=-A(1)*(BETA/ALPHA)*((T/ALPHA)**(BETA-1))*EXP(-(T/ALPHA)**BETA) > DADT(2)=-DADT(1)-K20*A(2)-K23*A(2)+K32*A(3) > DADT(3)=K23*A(2)-K32*A(3) > > $THETA > 6.6 > 25.3 > 0.266 > 6.38 > 4.1 > 3.09 > > $ERROR > ;Proportional Error > Y=F*(1.0+ERR(1)) > IPRED=F > IRES=DV-IPRED > IWRES=IRES/IPRED > > $SIGMA 0.207 > > $OMEGA 0.068 0.00409 0.00002 0.0701 0.00936 0.181 > > $SIMULATION (123456789) ONLYSIM > $TABLE ID CL V2 Q V3 ALPHA BETA K20 K23 K32 ETA1 ETA2 ETA3 ETA4 ETA5 ETA6 > NOPRINT ONEHEADER FILE=patab4 > $TABLE ID TIME DV MDV PRED IPRED IWRES RES WRES IRES GRP > NOPRINT ONEHEADER FILE=sdtab4 > $TABLE ID GRP > NOPRINT ONEHEADER FILE=cotab4 > $TABLE ID GRP > NOPRINT ONEHEADER FILE=catab4 > > > >
Apr 24, 2010 Burgess Freeman Weibull Absorption Simulation - Multiple Doses
Apr 24, 2010 Leonid Gibiansky Re: Weibull Absorption Simulation - Multiple Doses
Apr 25, 2010 Burgess Freeman Weibull Absorption Simulation - Multiple Doses
Apr 25, 2010 Leonid Gibiansky Re: Weibull Absorption Simulation - Multiple Doses
Apr 28, 2010 Burgess Freeman RE: Weibull Absorption Simulation - Multiple Doses