 # Weibull absorption

7 replies to this topic

### #1 Teodora

Teodora

Member

• • Members
•  • 13 posts

Posted 21 February 2014 - 04:07 AM

Hi,

I am trying to simultaneously model extravascular (dermal) and IV data, using a Weibull absorption model for the dermal data, as described in Ette & Williams PMetrics book (see attached).

This is the code that I am using:

test(){

WB = 1 - exp(-(Ka*time2)**gamma)

deriv(time2=1)

deriv(Aa = - (Aa * WB))

deriv(A1 = - (Cl * C)- (Cl2 * (C - C2)) + (Aa * WB))

deriv(A2 = (Cl2 * (C - C2)))

urinecpt(A0 = (Cl * C))

C = A1 / V

C2 = A2 / V2

dosepoint(A1) # this is the dosepoint for the subjects that received IV dose

dosepoint(Aa, bioavail = (F)) # this is the dosepoint for the subjects that received dermal dose

error(CEps = 1)

observe(CObs = C * (1 + CEps))

stparm(V = tvV*exp(nV))

stparm(Cl = tvCl * exp(nCl))

stparm(V2 = tvV2)

stparm(Cl2 = tvCl2 * exp(nCl2))

stparm(Ka = tvKa*exp(nKa))

stparm(F = tvF)

stparm(gamma = tvgamma*exp(ngamma))

fixef(tvV = c(692, 6925.17, ))

fixef(tvCl = c(5138, 51384,250000 ))

fixef(tvV2 = c(19360, 193607, ))

fixef(tvCl2 = c(3785, 37857, ))

fixef(tvKa = c(0, 0.02, ))

fixef(tvF = c(0.0001, 0.01,0.2 ))

fixef(tvgamma = c(0.1,1,))

ranef(diag(nCl2, nKa, ngamma) = c(1,1,1))

ranef(block(nCl, nV) = c(1, 0.1, 1))

}

Could you tell me if this is a correct implementation of Weibull absorption model? The reason I am using deriv(time2=1) is so that the WB function is calculated continuously at the same time steps as the integrator. If I bring the time in as a covariate, the WB function would be calculated only at the time points when the observations are taken.

Thanks,

Dora

### #2 serge guzy

serge guzy

• • Members
•   • 485 posts

Posted 21 February 2014 - 07:17 AM

Dear Dora

The equation seems to me correct. However there is no need to use time2.

You can just use t and map t with time as you have differential equations in your model.

WB = 1 - exp(-(Ka*time2)**gamma)

deriv(time2=1)

you can use

WB = 1 - exp(-(Ka*t)**gamma)

And in the mapping you should have time in the first row mapped with your time column of your data set.

Other than that this seems to be indeed the weibull absorption model as shown in different publications where WB is the fraction absorbed and x by the dose and bioavailability would be the amount absorbed.

Best

Serge

### #3 ElliotOffman

ElliotOffman

Member

• • Members
•  • 15 posts

Posted 28 October 2015 - 04:22 PM

Dear Dora The equation seems to me correct. However there is no need to use time2. You can just use t and map t with time as you have differential equations in your model. Instead of WB = 1 - exp(-(Ka*time2)**gamma) deriv(time2=1) you can use WB = 1 - exp(-(Ka*t)**gamma) And in the mapping you should have time in the first row mapped with your time column of your data set. Other than that this seems to be indeed the weibull absorption model as shown in different publications where WB is the fraction absorbed and x by the dose and bioavailability would be the amount absorbed. Best Serge

Can someone explain why there are two asteriks to describe the exponent for gamma? Isn't the wiebull 1-exp(-(ka*t)^gamma))?

Thanks Elliot

### #4 sinyinlim

sinyinlim

Member

• • Members
•  • 20 posts

Posted 21 February 2019 - 05:35 PM

Hello,

I was trying to implement Weibull absorption model and saw this post. I have a question regarding the equation used here:

WB = 1 - exp(-(Ka*t)**gamma)

deriv(Aa = - (Aa * WB))

The Aa here is written as a differential equation. to my understanding, WB model describes the amount unabsorbed as: Aa=D*F*exp(-(Ka*t)**gamma).

dAa/dt = -F*D*(gamma*ka)*(t*ka)^(gamma-1)*exp(-(t*ka)^gamma)

or using Aa equation above:

dAa/dt = -Aa*(gamma*ka)*(t*ka)^(gamma-1)

Is using deriv(Aa= -Aa*(gamma*ka)*(t*ka)^(gamma-1)) same as deriv(Aa = - (Aa * WB))?

thanks,

syl

### #5 Simon Davis

Simon Davis

• • • 1,119 posts

Posted 23 February 2019 - 06:07 AM

Can someone explain why there are two asteriks to describe the exponent for gamma? Isn't the wiebull 1-exp(-(ka*t)^gamma))?

Thanks Elliot

Hi Elliot, I am sorry I only just saw this and I expect you have worked it out now!
** is equvalent to ^ i.e. raised to the, or power. This is documented on page 88 of the PML reference guide in v.81.

### #6 Simon Davis

Simon Davis

• • • 1,119 posts

Posted 08 March 2019 - 01:49 PM

Sorry Syl, I originally missed this posting as it was on an old topic and then I forgot to post an answer to you !

To figure out what is happening; it's useful to read the original paper by V Piotrovskii (1987).

Compare the analytical solution:

test(){

covariate(Time)

covariate(dose)

Aa = dose *exp(-lambda*Time^shape)

A1 = dose *(1-exp(-lambda*Time^shape))

C = A1/V

error(CEps = 1)

observe(CObs = C + CEps)

fixef(V = c(, 1, ))

fixef(lambda = c(, 2, ))

fixef(shape= c(, 1.1, ))

}

to the solution with derivatives

test(){

Ka = lambda * shape * t^(shape-1) * exp(-lambda * t^shape)

deriv(Aa = - Aa * Ka)

deriv(A1 = Ka * dose)

dosepoint(Aa, idosevar = dose)

error(CEps = 1)

observe(CObs = C + CEps)

C = A1/V

fixef(V = c(, 1, ))

fixef(lambda = c(, 2, ))

fixef(shape= c(, 1.1, ))

}

both produce the same result.  Simon.

### #7 sinyinlim

sinyinlim

Member

• • Members
•  • 20 posts

Posted 19 March 2019 - 08:51 PM

Sorry Syl, I originally missed this posting as it was on an old topic and then I forgot to post an answer to you !

To figure out what is happening; it's useful to read the original paper by V Piotrovskii (1987).

Compare the analytical solution:

test(){

covariate(Time)

covariate(dose)

Aa = dose *exp(-lambda*Time^shape)

A1 = dose *(1-exp(-lambda*Time^shape))

C = A1/V

error(CEps = 1)

observe(CObs = C + CEps)

fixef(V = c(, 1, ))

fixef(lambda = c(, 2, ))

fixef(shape= c(, 1.1, ))

}

to the solution with derivatives

test(){

Ka = lambda * shape * t^(shape-1) * exp(-lambda * t^shape)

deriv(Aa = - Aa * Ka)

deriv(A1 = Ka * dose)

dosepoint(Aa, idosevar = dose)

error(CEps = 1)

observe(CObs = C + CEps)

C = A1/V

fixef(V = c(, 1, ))

fixef(lambda = c(, 2, ))

fixef(shape= c(, 1.1, ))

}

both produce the same result.  Simon.

Thanks Simon, that was helpful. and just to confirm, deriv(A1 = Ka * dose) is the same as deriv(A1=Ka*Aa), correct?

### #8 Simon Davis

Simon Davis

• • • 1,119 posts

Posted 27 March 2019 - 12:20 PM

Sorry I missed your last question;

just to confirm, deriv(A1 = Ka * dose) is the same as deriv(A1=Ka*Aa), correct?

And yes, three was an error in the model with deriv statement; it should be

test(){

Ka = lambda * shape * t^(shape-1) * exp(-lambda * t^shape)

deriv(Aa = - dose * Ka)

deriv(A1 = Ka * dose)

dosepoint(Aa, idosevar = dose)

error(CEps = 1)

observe(CObs = C + CEps)

C = A1/V

fixef(V = c(, 1, ))

fixef(lambda = c(, 2, ))

fixef(shape= c(, 1.1, ))

}

Aa is the amount of the drug at the current time point in the absorption compartment and it is calculated during integration procedure.

dose is an overall amount of  drug in absorption compartment.

There's no easy solution exists for multiple dose implementation, you could look at some the ways proposed in this old post on the NM users group  https://cognigencorp...April/1660.html

#### 0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users 