Jump to content


Photo

Sequential zero order followed by first order absorption


  • Please log in to reply
10 replies to this topic

#1 Davidq8

Davidq8

    Advanced Member

  • Members
  • PipPipPip
  • 57 posts

Posted 13 February 2022 - 03:48 AM

Hi, I am trying to build a PopPk model where the absorption process happens by the following scenario:
The drug will be absorbed after oral administration first by zero-order absorption during Duration= D. When the zero-order process ends, the remaining drug will be absorbed by first-order absorption with Tlag. I built the following model, but I found Tlag not estimated by the model. It is the same value that was initially estimated at 1. I am not sure if I made a mistake writing the codes. 
 
test(){
cfMicro(A1, Cl / V, Cl2 / V, Cl2 / V2, first = (Aa = Ka))
dosepoint(Aa, duration=TK0, bioavail=(FR))
dosepoint(Aa, tlag = Tlag, bioavail=(1-FR))
C = A1 / V
error(CEps = 0.1)
observe(CObs = C + CEps * sqrt(1 + C^2 * (CMultStdev/sigma())^2))
stparm(Ka = tvKa * exp(nKa))
stparm(V = tvV * exp(nV))
stparm(V2 = tvV2 * exp(nV2))
stparm(Cl = tvCl * exp(nCl))
stparm(Cl2 = tvCl2 * exp(nCl2))
stparm(Tlag = tvTlag * exp(nTlag))
stparm(TK0 = tvTK0* exp(nTK0))
stparm(FR = tvFR* exp(nFR ))
stparm(CMultStdev = tvCMultStdev)
fixef(tvKa = c(, 1, ))
fixef(tvV = c(, 53871, ))
fixef(tvV2 = c(, 82546, ))
fixef(tvCl = c(, 5800, ))
fixef(tvCl2 = c(,5800, ))
fixef(tvTlag = c(, 1, ))
fixef(tvTK0 = c(, 3, ))
fixef(tvFR = c(, 1, ))
fixef(tvCMultStdev = c(, 1, ))
ranef(diag(nV, nCl, nKa, nV2, nCl2, nTlag, nTK0,nFR) = c(0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1))
}
 
Can I get help on this issue? Thanks  

Edited by Davidq8, 13 February 2022 - 05:46 AM.


#2 Simon Davis

Simon Davis

    Advanced Member

  • Administrators
  • 1,318 posts

Posted 13 February 2022 - 10:40 AM

I think you need 2 dosepoints on Aa, have a lookat that and let us know how you get on.  I can look properly later in the week.  Simon.

Attached Thumbnails

  • 2dose_points.jpg


#3 smouksassi1

smouksassi1

    Advanced Member

  • Members
  • PipPipPip
  • 231 posts
  • LocationMontreal

Posted 13 February 2022 - 02:16 PM

try a simpler model first

 

test(){
cfMicro(A1, Cl / V,  first = (Aa = Ka))
dosepoint(A1, duration=TK0, bioavail=(FR))
dosepoint(Aa, tlag = TK0, bioavail=(1-FR))
C = A1 / V
error(CEps = 0.1)
observe(CObs = C + CEps * sqrt(1 + C^2 * (CMultStdev/sigma())^2))
stparm(Ka = tvKa * exp(nKa))
stparm(V = tvV * exp(nV))
stparm(Cl = tvCl * exp(nCl))
stparm(TK0 = tvTK0)
stparm(FR = tvFR)
stparm(CMultStdev = tvCMultStdev)
fixef(tvKa = c(, 1, ))
fixef(tvV = c(, 10, ))
fixef(tvCl = c(, 5, ))
fixef(tvTK0 = c(, 3, ))
fixef(tvFR = c(, 0.5, ))
fixef(tvCMultStdev = c(, 1, ))
ranef(diag(nV, nCl, nKa) = c(0.1, 0.1, 0.1))
}
 
make sure that you enter the same dose amount into Aa and A1 then total dose into system =
A1*FR + (1-FR) *Aa =
 
make sure that tlag = tk0
 
dosepoint(A1, duration=TK0, bioavail=(FR))
dosepoint(Aa, tlag = TK0, bioavail=(1-FR))
 
 

Attached Thumbnails

  • zerofirst.png


#4 Davidq8

Davidq8

    Advanced Member

  • Members
  • PipPipPip
  • 57 posts

Posted 15 February 2022 - 11:48 PM

I think you need 2 dosepoints on Aa, have a lookat that and let us know how you get on.  I can look properly later in the week.  Simon.

Thanks, Simon, for the clarification 



#5 Davidq8

Davidq8

    Advanced Member

  • Members
  • PipPipPip
  • 57 posts

Posted 15 February 2022 - 11:50 PM

 

try a simpler model first

 

test(){
cfMicro(A1, Cl / V,  first = (Aa = Ka))
dosepoint(A1, duration=TK0, bioavail=(FR))
dosepoint(Aa, tlag = TK0, bioavail=(1-FR))
C = A1 / V
error(CEps = 0.1)
observe(CObs = C + CEps * sqrt(1 + C^2 * (CMultStdev/sigma())^2))
stparm(Ka = tvKa * exp(nKa))
stparm(V = tvV * exp(nV))
stparm(Cl = tvCl * exp(nCl))
stparm(TK0 = tvTK0)
stparm(FR = tvFR)
stparm(CMultStdev = tvCMultStdev)
fixef(tvKa = c(, 1, ))
fixef(tvV = c(, 10, ))
fixef(tvCl = c(, 5, ))
fixef(tvTK0 = c(, 3, ))
fixef(tvFR = c(, 0.5, ))
fixef(tvCMultStdev = c(, 1, ))
ranef(diag(nV, nCl, nKa) = c(0.1, 0.1, 0.1))
}
 
make sure that you enter the same dose amount into Aa and A1 then total dose into system =
A1*FR + (1-FR) *Aa =
 
make sure that tlag = tk0
 
dosepoint(A1, duration=TK0, bioavail=(FR))
dosepoint(Aa, tlag = TK0, bioavail=(1-FR))

 

Thanks, Sameer, for having time correcting the codes for my analysis.



#6 Davidq8

Davidq8

    Advanced Member

  • Members
  • PipPipPip
  • 57 posts

Posted 15 February 2022 - 11:55 PM

I have another question. How about if we have changed the absorption scenario to simultaneous where both zero and first order are happing at the same time. I am not sure if the following model describes the process correctly:
 

test(){
cfMicro(A1, Cl / V,  first = (Aa = Ka))
dosepoint(Aa, tlag = Tlag,duration = TK0 )
C = A1 / V
error(CEps = 0.1)
observe(CObs = C + CEps * sqrt(1 + C^2 * (CMultStdev/sigma())^2))
stparm(Ka = tvKa * exp(nKa))
stparm(V = tvV * exp(nV))
stparm(Cl = tvCl * exp(nCl))
stparm(TK0 = tvTK0)
stparm(CMultStdev = tvCMultStdev)
fixef(tvKa = c(, 1, ))
fixef(tvV = c(, 10, ))
fixef(tvCl = c(, 5, ))
fixef(tvTK0 = c(, 3, ))
fixef(tvCMultStdev = c(, 1, ))
ranef(diag(nV, nCl, nKa) = c(0.1, 0.1, 0.1))
}



#7 smouksassi1

smouksassi1

    Advanced Member

  • Members
  • PipPipPip
  • 231 posts
  • LocationMontreal

Posted 16 February 2022 - 07:27 AM

yes you can have tlag different than tk0 and then both can happen at the same time 
you can have a lag affecting both or just the first order and then if tvlag < tk0 then 
 
dosepoint(A1, duration=TK0, bioavail=(FR))
dosepoint(Aa, tlag = tvlag, bioavail=(1-FR))
 
you still need two dosepoint if you want simultaneous absorption ( there is more advanced options where dosepoint can split a dose automatically but for now stick to the above
 
 
dosepoint(Aa, tlag = Tlag,duration = TK0 )
this line is saying we have a tlag after which the dose enter the Aa absorption compartment using a TK0
then from Aa to A1 we have a first order process using a KA
cfMicro(A1, Cl / V,  first = (Aa = Ka))


#8 Davidq8

Davidq8

    Advanced Member

  • Members
  • PipPipPip
  • 57 posts

Posted 16 February 2022 - 05:03 PM

 

yes you can have tlag different than tk0 and then both can happen at the same time 
you can have a lag affecting both or just the first order and then if tvlag < tk0 then 
 
dosepoint(A1, duration=TK0, bioavail=(FR))
dosepoint(Aa, tlag = tvlag, bioavail=(1-FR))
 
you still need two dosepoint if you want simultaneous absorption ( there is more advanced options where dosepoint can split a dose automatically but for now stick to the above
 
 
dosepoint(Aa, tlag = Tlag,duration = TK0 )
this line is saying we have a tlag after which the dose enter the Aa absorption compartment using a TK0
then from Aa to A1 we have a first order process using a KA
cfMicro(A1, Cl / V,  first = (Aa = Ka))

 

Thanks, Samer for clarifying the point regarding simultaneous absorption model, but I have a question about Tlag

so if we add two lag time for both absorption zero and the first, let assume the Tlag for the zero order will be Tlag1 

and the codes lines will be like this:

 

dosepoint(A1, duration=TK0, bioavail=(FR))

stparm(Tlag = tvTlag * exp(nTlag))

 

Now, time lag for the first order absorption (Tlag2) will be Tlag2= Tlag (for zero order) + TK0 (duration).

My question how we write codes line for Tlag 2?

 

Thanks 



#9 smouksassi1

smouksassi1

    Advanced Member

  • Members
  • PipPipPip
  • 231 posts
  • LocationMontreal

Posted 17 February 2022 - 07:33 AM

test(){
cfMicro(A1, Cl / V,  first = (Aa = Ka))
dosepoint(A1, tlag = tvtlag1, duration=TK0, bioavail=(FR))
dosepoint(Aa, tlag = tvtlag1+ TK0, bioavail=(1-FR))
C = A1 / V
error(CEps = 0.1)
observe(CObs = C + CEps * sqrt(1 + C^2 * (CMultStdev/sigma())^2))
stparm(Ka = tvKa * exp(nKa))
stparm(V = tvV * exp(nV))
stparm(Cl = tvCl * exp(nCl))
stparm(TK0 = tvTK0)
stparm(FR = tvFR)
stparm(CMultStdev = tvCMultStdev)
fixef(tvKa = c(, 1, ))
fixef(tvV = c(, 10, ))
fixef(tvCl = c(, 5, ))
fixef(tvtlag1 = c(, 1, ))
fixef(tvTK0 = c(, 3, ))
fixef(tvFR = c(, 0.5, ))
fixef(tvCMultStdev = c(, 1, ))
ranef(diag(nV, nCl, nKa) = c(0.1, 0.1, 0.1))
}

Attached Thumbnails

  • zerofirst.png

Attached Files



#10 smouksassi1

smouksassi1

    Advanced Member

  • Members
  • PipPipPip
  • 231 posts
  • LocationMontreal

Posted 17 February 2022 - 07:37 AM

you can just tell the pml what you want:

 

dosepoint(A1, tlag = Tlag1, duration=TK0, bioavail=(FR))
dosepoint(Aa, tlag =  Tlag1 + Tlag2 + TK0, bioavail=(1-FR))
 
so you can have lag1 and tk0 for the zero order part and only start the first order after lag1 + tk0 (zero order finished) + another lag2 before first start 
 

if for Aa tlag = Tlag1 + TK0then no need to have a separate line for it it is a sum of two already defined parameter

 

stparm(Tlag1= tvtlag1* exp(nTlag1))

stparm(Tlag2 = tvtlag1 * exp(nTlag2))

 

estimating n on lag and have multiple of those can render you model pretty unsolvable 



#11 Davidq8

Davidq8

    Advanced Member

  • Members
  • PipPipPip
  • 57 posts

Posted 17 February 2022 - 07:52 PM

Thanks, Sameer, for your time answering all of my questions regarding mixed absorption scenarios. All of your answers helped me to understand the concepts better. I believe combined absorption, in general, gives a better fit than Tlag alone, and it could be a possible alternative to the transit compartment that has a downside which is the long running time needed especially if you have a complex model or computer system with limited computational power. 


Edited by Davidq8, 17 February 2022 - 07:53 PM.





0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users