# RE: Weibull Absorption Simulation - Multiple Doses

From: Freeman, Burgess <Burgess.Freeman>
Date: Wed, 28 Apr 2010 13:11:26 -0600

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

Burgess

Burgess Freeman, Pharm.D.
Sr. Research Scientist
Drug Metabolism, Pharmacokinetics & Clinical Pharmacology (DMPKCP)
Array BioPharma, Inc.

-----Original Message-----
From: owner-nmusers
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":

T
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)=

====================
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

====================
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

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)**B=
E
TA)

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)

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 #
>
> \$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
> =

>
> \$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
> \$TABLE ID TIME DV MDV PRED IPRED IWRES RES WRES IRES GRP