Weibull absorption

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(-(Katime2)**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 = tvVexp(nV)) stparm(Cl = tvCl * exp(nCl)) stparm(V2 = tvV2) stparm(Cl2 = tvCl2 * exp(nCl2)) stparm(Ka = tvKaexp(nKa)) stparm(F = tvF) stparm(gamma = tvgammaexp(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

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(-(Katime2)**gamma) deriv(time2=1) you can use WB = 1 - exp(-(Kat)**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

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=DFexp(-(Ka*t)**gamma).

dAa/dt = -FD(gammaka)(t*ka)^(gamma-1)exp(-(tka)^gamma)

or using Aa equation above:

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

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

thanks,

syl

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.

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(-lambdaTime^shape)

A1 = dose (1-exp(-lambdaTime^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?

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.com/nonmem/current/2010-April/1660.html