Re: lagged absorption and empirical input function
Pierre-Olivier
You may use IF() to do it, e.g.,
LAG = THETA()
$DES
T1=T-LAG
INPUT=0
IF(T1.GT.0) INPUT = ; whatever you need expressed as function of T1
DADT(1)=(DOSE/V)*INPUT-K*A(1)
--------------------------------------
Leonid Gibiansky, Ph.D.
President, QuantPharm LLC
web: www.quantpharm.com
e-mail: LGibiansky at quantpharm.com
tel: (301) 767 5566
Quoted reply history
On 7/27/2011 11:10 PM, Tremblay, Pierre-Olivier wrote:
> Thank you Luann and Jan-Stefan for your suggestions. If I understand correctly you are
> suggesting I use ADVAN1 or another "pre-coded" ADVAN routine which precludes
> the use of the $DES block. In fact, I actually have a reasonnable fit to my data from a
> zero-order input (pretty sharp peaks) and with duration (D1) set as a fixed-effect, using
> either ADVAN1 or ADVAN5. Obviously, with these ADVANs, lag-times are a matter of
> declaring ALAGs (or sometimes using transit compartments to fit the model to slowly
> increasing early concentrations as Jan-Stefan suggested).
>
> However, I deliberately choose to have an empirical p.d.f. (weibull, inverse
> gaussian or other) as an input because that will be used in a later IVIVC
> modeling and the cumulative density distribution of these functions can be
> readily fitted to dissolution data. The thing is this, one of the formulations
> I have to work with is enteric-coated, hence the need to model a lag-time.
>
> My problem is that MTIME works perfectly fine with rate constants in differential
> equations but apparently not so much with "block" functions, so to speak. An
> (more probable) alternative is that the way I use MTIME is wrong.
>
> > From my understanding, coding discontinuous change-events with conditional IF
> > statements in a $DES block may not be a very good idea. That's the reason I
> > inquired about MTIME as an alternative.
>
> I paste below a larger chunck of my control file so you may see what I mean.
>
> $SUBROUTINE ADVAN6 TOL=6
> $MODEL NCOMP=1 COMP=(CENTRAL)
> $PK
> CV=THETA(1)*EXP(ETA(1))
> CV2=CV**2
> MDT=THETA(2)*EXP(ETA(2))
> K=THETA(3)*EXP(ETA(3))
> V=THETA(4)*EXP(ETA(4))
> MTIME(1)=THETA(5)+ETA(5)
> DOSE=1000000
> $DES
> P1=2*3.141593*CV2*(T+0.00001)**3
> P2=((T+0.00001)-MDT)**2
> P3=2*CV2*MDT*(T+0.00001)
> P4=SQRT(MDT/P1)
> RATIO=-1*(P2/P3)
> P5=EXP(RATIO)
> IG=P4*P5
> INPUT=IG*MPAST(1)
> DADT(1)=(DOSE/V)*INPUT-K*A(1)
>
> Thanks again :o)
>
> Pierre-Olivier
>
> -----Message d'origine-----
> De : Luann Phillips [mailto:[email protected]]
> Envoyé : 27 juillet 2011 22:01
> À : Tremblay, Pierre-Olivier
> Cc : [email protected]
> Objet : Re: [NMusers] lagged absorption and empirical input function
>
> Pierre-Olivier,
>
> NONMEM takes care of all inputs via the structure of dosing records in the
> input dataset. Therefore, they are not included in the $DES block.
>
> Instead:
>
> In the input dataset
>
> ID TIME AMT DV etc.
> 1 0 100 .
> 1 1 . 5
> etc.
>
> $PK
> ALAG1=THETA(#) ;this will be the estimate of the absorption lag
> S1=1/V
> etc.
>
> $DES
> ;note NONMEM codes diff. eqs. in amount units. The scale parameter (S1) ;in $PK
> is used to convert the amount (AMT) unit to the DV (or conc.) ;unit ;NONMEM
> will insert the dose of 100 at the TIME of the dose in the ;dataset + ALAG1.
> The input will remain zero until that time automatically.
>
> DADT(1)=-K*A(1)
>
> ----------------
>
> If you are fitting a basic 1 cmt model with first-order elimination, I would
> recommend using subroutine ADVAN1 TRANS1. You don't provide $DES for this
> model. You just supply $PK.
>
> $PK
> K=THETA(1)
> V=THETA(2)
> ALAG1=THETA(3)
> S1=1/V ;or whatever is appropriate for your units of dose,v,and dv.
>
> -------------
>
> Best Regards,
>
> Luann Phillips
> Director, PK/PD
> Cognigen Corporation
>
> Tremblay, Pierre-Olivier wrote:
>
> > Hi,
> >
> > I'm trying to implement an absorption lag-time into a model described
> > by differential equations and using an empirical input function.
> >
> > My initial idea was to define a MTIME(1) corresponding to the lag-time
> > and to use MPAST(1) to set the start of the input as below.
> >
> > DADT(1)=(DOSE/V)*INPUT*MPAST(1)-K*A(1)
> >
> > However, I only end up with no input at all in the system resulting in
> > simulated DV of 0 ± residual error. The issue seems related to the
> > use MPAST with the input function but I don't know how.
> >
> > Would anyone be kind enough to point me in the right direction?
> >
> > Thanks,
> >
> > Pierre-Olivier