Hi, Thank you for all you help and explanation. I tried with MTIME,MNEXT, and MPAST. However, I got warning :(WARNING 80) $PK SETS MTIME BUT NOT MTDIFF. WHEN AN ELEMENT OF MTIME IS RESET, THEN $PK SHOULD ALSO SET MTDIFF=1.
I would like to separate 0-24 hr period to 3 parts, each represented by a Kin equation. Here is my codes: $PK TMIN = THETA(3)*EXP(ETA(3)) ; time at minimum TGAP = THETA(4)*EXP(ETA(4)) ; time from Tmin to Tmax MTIME(1) = TMIN MTIME(2) = TMIN+TGAP $DES T1 = T-24*INT(T/24) ;convert time to 0-24 hr period FLAG1 = 1-MNEXT(1) ; =1 only during 0-Tmin period FLAG2 = MPAST(1)-MPAST(2) ; =1 only during Tmin-Tmax period FLAG3 = 1-MNEXT(2) ; =1 only during Tmax-24 period DADT(1)= KIN1*FLAG1+KIN2*FLAG2+KIN3*FLAG3-KOUT*A(1) Is there any mistakes in my coding?. I don't think I need to set MTDIFF=1 as I don't want to reset MTIME for each individual, am I right? For MNEXT(1), it will =1 until time past Tmin, right? Thanks. Li Li On Fri, Jun 3, 2011 at 2:44 PM, Alison Boeckmann < alisonboeckm...@fastmail.fm> wrote: > My comments are attached in file luann.txt > > On Wed, 01 Jun 2011 17:57 -0400, "Luann Phillips" > <luann.phill...@cognigencorp.com> wrote: > > Alison, > > > > Thank you for the additional information. Especially the part about $DES > > computing at the event time in a data record for output to the $TABLE. I > > would like to make sure that I understand a specific point correctly. > > > > During a step from t=T1 to t=T2, NONMEM may still take on a value of > > t=T2+i (i=a tiny number) and compute the equations at this time point. > > When it is done, it goes back and computes the values at t=T2 for output > > to the table file. > > > > So if you have an expression like the following in your $DES block, > > would you still need to set flags to 'help' processing along at t=T2. > > (context of example from a previous note from Li Li) > > > > Example: > > integrating from TIME=T1 to TIME=T2 (which = a multiple of 24) > > > > RM=THETA(1) > > > > $DES > > > > TS=T-24*INT(T/24) > > KIN=TS*RM > > DADT(1) = -KIN*A(1) > > > > This function for Kin creates a cusp at every multiple of 24. So the > > limit of Kin as you approach a multiple of 24 from the left is a maximum > > and as you approach from the right the limit of Kin=0 (similar if not > > same situation that occurs for an absorption alag). So if an integral > > step of size h (within the advance from T1 to T2) encompasses a multiple > > of 24 should flags be set to allow the integration routine to use > > TS=T- 24*INT(time at beginning of interval h/24) for the full step? > > > > Or in terms of the an ALAG situation: > > > > What happens if NONMEM is taking a step (size h within an advance from > > T1 to T2) that encompasses the value of ALAG? > > > > Does it use DADT(1) = 0*A(1) until t=ALAG and then switch to > > DADT(1)=-Ka*A(1) at t >= ALAG (creating a cusp within the interval h)? > > > > or > > > > Does it use DAD(1) = 0 until t=end of the h interval (even though it's a > > small bit past ALAG) and then switch to DADT(1)=-Ka*A(1) at the end of > > the h interval? > > > > I really appreciate that you take the time to continue expanding our > > knowledge about NONMEM. > > > > Best Regards, > > > > Luann Phillips > > Director PK/PD > > Cognigen Corporation > > (716) 633-3463 ext. 236 > > > > > > > > > > > > > > Alison Boeckmann wrote: > > > Here is a little background on how it works. > > > > > > ADVAN routines such as ADVAN6 use a subroutine from third party sources > > > to do the integration. For example, ADVAN6 calls DVERK from IMSL, > > > ADVAN13 calls LSODA, etc. These subroutines are the ones that call DES. > > > They call DES with various values of T during the integration > > > ("advance") from T1 to T2. (T1 and T2 are beginning and ending event > > > time. Typically, these are the times on a pair of event records.) The > > > integrating subroutine may decide it has enough information after a > call > > > with a value of T that is not exactly T2 (might be a little less or a > > > little more.) > > > > > > A change was made with NONMEM V so that, after an advance, DES is > called > > > by the ADVAN routine itself (i.e., $DES statements are evaluated) at > the > > > exact value of the event time. > > > > > > From the NONMEM V Supplemental Guide of March 1998 (guides/supp.pdf): > > > 39. Displayed DES-defined Items > > > DES-defined items may be displayed in tables or scatterplots and are > > > computed at the event time in the data record. With previous versions > > > of PREDPP, the displayed items might have been computed at a slightly > > > different time and might have had slightly different values. > > > > > > This fixes the difficulty that Luann mentioned. > > > > > > Paul says: > > > A related caveat is that during integration between two time points, > > > the value of data items (in the $DES block) are set to the values > > > defined at the end time, not the start time. I'm afraid that I can't > > > give you a good explanation for this design decision. > > > > > > Every variable displayed via $TABLE has the value that was calculated > by > > > the last call to DES with the current event record. This is not a > design > > > decision; it is inevitable. Values created by PREDPP for display by > > > NONMEM are stored in a common area (formerly COMMON NMPRD4; now MODULE > > > NMPRD4). To display values at the start time would require PREDPP to > > > save the values and to restore that part of NMPRD4. This could be > rather > > > difficult. Also, Stuart Beal preferred to see DES-computed values at > > > the end time and that is why the change for a final call to DES at the > > > event time was made. > > > > > > This also explains why the values for the first event record of the > > > individual are those from the last event record of the previous > > > individual. If there is no advance in time, then there is no call to > > > the integrating subroutine, and no call to DES, so the values in NMPRD4 > > > are unchanged. Warning 48 was new with NONMEM V in 1998. Why did we > not > > > at that time add a call to DES from the ADVAN routine with the first > > > event record? I can't remember. Stuart Beal may have been afraid that > > > some of the computations in a complicated DES might fail with values > > > from the first event record, whereas they were ok with values from the > > > second and subsequent event records. > > > > > > > > > > > > On Thu, 26 May 2011 16:28 -0400, "Luann Phillips" > > > <luann.phill...@cognigencorp.com> wrote: > > >> Hi Lili, > > >> > > >> In addition to the information Paul provided. DDTI for a specific row > > >> should be the last value of T (continuous time) that the integration > > >> step took. This may not match the event time identically. As NONMEM is > > >> performing numerical integration between two event times T is taking > > >> on many values between the two event times (TIME, discrete). During > > >> this process, it may actually require taking a step that goes a small > > >> amount past the 2nd event time. > > >> > > >> Best regards, > > >> > > >> Luann Phillips Director, PK/PD Cognigen Corporation > > >> (716) 633-3463 ext. 236 > > >> > > >> Paul Matthias Diderichsen wrote: > > >>> Hi Lili, > > >>> > > >>> On 5/26/2011 1:52 AM, Li Li wrote: > > >>> > When I output DDT1, the table will be: Subject Time (hr) DDT1 > > >>> > 1 0 4??? > > >>> [...] > > >>> > 2 0 5??? > > >>> [...] > > >>> > Why the DDT1 for subject 1 at first time point is 4 and subject 2 > > >>> > at first time point is 5? Why it holds the last time point value > > >>> > of each subject? > > >>> > > >>> In the output, nonmem tells you that this is going to happen: > > >>> > > >>> " (WARNING 48) DES-DEFINED ITEMS ARE COMPUTED ONLY WHEN EVENT TIME > > >>> INCREASES. E.G., DISPLAYED VALUES ASSOCIATED WITH THE FIRST EVENT > > >>> RECORD OF AN INDIVIDUAL RECORD ARE COMPUTED WITH (THE LAST ADVANCE > > >>> TO) AN EVENT TIME OF THE PRIOR INDIVIDUAL RECORD. " > > >>> > > >>> A related caveat is that during integration between two time points, > > >>> the value of data items (in the $DES block) are set to the values > > >>> defined at the end time, not the start time. > > >>> > > >>> I'm afraid that I can't give you a good explanation for this design > > >>> decision. > > >>> > > >>> Kind regards, > > >>> > > > > > > -- > Alison Boeckmann > alisonboeckm...@fastmail.fm > >