$PK

PK abbreviated code block for PK parameter specifications.

1
2
$PK
abbreviated code

Discussion

The $PK code block must only be with the first problem specification, preceding any $ERROR records. It cannot be used with a user-supplied MODEL subroutine or TRANS routine.

A $PK block must define all basic PK parameters according to specified ADVAN and TRANS. It may also define the additional PK parameters. The basic parameters (see below) are typically the rate constants ("micro-constants") for use in kinetic formulas, or parameters specified through transformation ("TRANS"), such as clearance and volume. For additional parameters see ADVAN and TRANS routines.

See abbreviated code for general syntax.

Assignment and conditional statements

Left-hand quantities

Left-hand quantities in assignment statements must include basic PK parameters listed below.

Basic PK parameters ADVAN routines
K CL V (ADVAN1)
KA K CL V (ADVAN2)
K K12 K21 CL V Q VSS V1 V2 ALPHA BETA AOB (ADVAN3)
KA K K23 K32 CL V Q VSS V1 V2 V3 ALPHA BETA AOB (ADVAN4)
Km0 Kmn (ADVAN5, ADVAN7)
P(n) (ADVAN6, ADVAN8, ADVAN9, ADVAN13, ADVAN14, ADVAN15, ADVAN16, ADVAN17, ADVAN18)
VM, KM (ADVAN10)
K K12 K21 K13 K31 CL Q2 Q3 V1 V2 V3 ALPHA BETA GAMMA (ADVAN11)
KA K K23 K32 K24 K42 CL Q3 Q4 V2 V3 V4 ALPHA BETA GAMMA (ADVAN12)

See ADVAN and TRANS routines for details of each routine.

Additional optional PK parameters include PK-defined (i.e., PRED-defined) quantities, and the ones listed below (n denotes compartment number).

Scale parameters Sn

Associated with each prediction is an observation compartment. The amount A in that compartment at the time of observation, divided by parameter S, is the prediction (amounts converted to concentrations). S is called the scaling parameter. There is one such parameter associated with every compartment of the kinetic model (including the output compartment). By default S=1.0.

S0 is the alias of Sn when n indicates the output compartment; SC is the alias of S for the central compartment.

Bio-availability fractions Fn

With each possible dose compartment of the kinetic model (the output compartment is not a possible dose compartment), there is associated one bioavailability fraction parameter Fn.

If the amount on a dose record is A, and the bioavailability fraction is F, only the fraction F of A actually appears in the dose compartment (either instantaneously at the time the dose enters the compartment - with a bolus dose, or over a period of time - with a regular infusion; the bioavailability fraction does not apply to a steady-state infusion).

Bioavailability fractions are optional such that bioavailability fractions associated with compartments never used as dose compartments may be ignored. The default values is 1.

When additional doses are specified on a dose event record, the bioavailability fraction applies to the dose and to all the additional doses. When a steady-state dose is specified on a dose event record, the bioavailability fraction applies to the dose and to all implied doses leading to the steady-state.

(See CMT, PK, default compartment).

Output fractions FO

The output fraction of the output compartment. FO has alias F0 and Fi, with i being the output compartment ID. FO should be between 0 and 1, with default value 1.

The concept of output fraction is based on the assumption that the rate of change of drug amount in the output compartment is proportional in the other compartment amounts.

Tyically, the output compartment is used for urine observations, and the central for plasma observations, with any ADVAN.

(See CMT, PK, default compartment).

Infusion rates Rn

There is one rate parameter associated with every possible dose compartment of the kinetic model (the output compartment is not a possible dose compartment) and the rate parameter used for a given dose is that one associated with the compartment into which the dose is given (the dose compartment).

A rate-modeled zero-order bolus dose is actually an infusion, but one whose rate is given by the rate parameter computed by the PK routine.

Rate parameters are optional in the sense that rate parameters associated with compartments never receiving rate-modeled zero-order bolus doses or rate-modeled steady-state infusions may be ignored. However, if the RATE data item on some dose event record contains the value -1, then a rate parameter for the dose compartment must be computed in the PK routine.

Rate parameters act continuously. PREDPP obtains the value of a rate parameter, holding over the state-interval ( t1 , t2 ), from a call to PK with the record associated with t2, even if the dose event time occurs before t2. Therefore, if there are state times (e.g. t2) falling within the time interval over which a zero-order bolus dose appears in the system, there exists the possibility that the rate of drug input can change during the interval. For this to occur, the rate parameter would need to be modeled in terms of time varying covariates. As a result, a zero-order bolus dose where the rate is modeled might be better described as a piecewise zero-order process.

When additional doses are specified on a dose event record the rate parameter applies to the dose and to all the additional doses.

(See CMT, RATE, PK, default compartment).

(See exogenous supplementation example).

Infusion durations Dn

There is one duration parameter associated with every possible dose compartment of the kinetic model (the output compartment is not a possible dose compartment) and the duration parameter used for a given dose is that one associated with the compartment into which the dose is given (the dose compartment).

A duration-modeled zero-order bolus dose is actually an infusion, but one whose duration is given by the rate parameter computed by the PK routine.

Duration parameters are optional in the sense that duration parameters associated with compartments never receiving duration-modeled zero-order bolus doses may be ignored. However, if the RATE data item on some dose event record contains the value -2, then a duration parameter for the dose compartment must be computed in the PK routine.

A duration parameter is computed by the PK routine using, if needed, information in the dose record. Therefore, its value for the given dose is constant over time.

When additional doses are specified on a dose event record the duration parameter applies to the dose and to all the additional doses.

(See CMT, RATE, PK, default compartment).

(See multiple dose example).

Absorption lags ALAGn

There is one absorption lag time (parameter) associated with every possible dose compartment of the kinetic model (the output compartment is not a possible dose compartment) and the absorption lag time used for a given dose is that one associated with the compartment into which the dose is given (the dose compartment).

The event time t on a dose record refers to the recorded time the dose was administered. In the case of a regular infusion, t is the time the infusion was initiated. An absorption lag time is an increment of time L such that the time that the dose is regarded (by PREDPP) as entering (or starting to enter) the system is t+L.

Absorption lag times are optional in the sense that absorption lag times associated with compartments never used as dose compartments may be ignored. The values of absorption lag times that are not computed in PK are always understood to be 0.

An absorption lag time for a dose is computed by the PK routine using, if needed, information in the dose record. When additional doses are specified on a dose event record, the absorption lag time applies to the dose and to all the additional doses. With a steady-state multiple dose the absorption lag time applies not only to this dose, but also to all the preceding implied doses. With a steady-state dose, the lag time should be less than the interdose interval.

(See cmt, PK, default compartment).

Time scale: TSCALE

If a time scale parameter is modeled by PK, then time itself may be scaled differently between individuals. There is a single time scale parameter that multiplies all rate constants. The parameter acts continuously (and could therefore theoretically itself vary with time measured on an external clock). It can only be used with linear kinetic models. If it is not used, it can be ignored. If the value of the time scale parameter is not computed in PK, it is always under- stood to be 1.

The time scale parameter does not scale the duration parameter D of a duration-modeled zero-order bolus dose.

TSCALE may be written as XSCALE.

PREDPP ignores the time scale parameter with general nonlinear models (ADVAN6, 8, 9, 13,14,15,16,17,18).

(See PK).

Model event times MTIME

See MTIME.

Initial compartment amounts A_0

Array elements A_0(1), …, A_0(n) may be used on the left-hand to assign initial values to compartments. A reserved right-hand variable, A_0FLAG, is set to 1 by PREDPP when PK may initialize compartments to specific amounts. For example,

1
2
3
  IF (A_0FLG.EQ.1) THEN
  ! compartment initialization block to specify A_0(n)=....
  ENDIF

This specifies the initial amount for compartment n. A_INITIAL(n) is a synonym for A_0(n). The above code fragment is an explicit compartment initialization block. A_0(n) may also be assigned a value with an unconditional statement. This defines an implicit compartment initialization block. NMTRAN inserts "IF (A_0FLG.EQ.1) …" before the statement and "ENDIF" after it. Indicator variables may be used to avoid conditional assignment statements.

See Compartment Initialization Block.

Initial steady state flag I_SS

Reserved left-hand variable I_SS may be set to the same values as the I_SS option of $MODEL record. This allows initial steady-state to be set conditionally, e.g., if some subjects are at steady-state and others are not.

(See ADVAN6/8/9, $MODEL)

(See Initial Steady State: I_SS,ISSMOD).

Right-hand quantities

Right-hand quantities include

  • Data item labels specified on the $INPUT statement.
  • THETA(n).
  • ETA(n) (Used if the data are population.)
  • PK-defined items that appeared earlier as left-hand quantities.

Some special quantitie are described below.

NEWIND

Same as the NEWIND argument passed by NONMEM to PREDPP.

  • NEWIND=0: PK is called with the first record of the data set. THETA value may differ from value at last call with this record.
  • NEWIND=1: PK is called with the first event record of the second or subsequent individual record. THETA value does not differ from value at last call with this record, and PRED is nonrecursive (see I_REC), or, First record of a subsequent individual record.
  • NEWIND=2: PK is called with the second or subsequent data record of an individual record.
ICALL

Same as the ICALL argument passed by NONMEM to PREDPP.

  • ICALL=1: Initialization.
  • ICALL=2: Normal call.
  • ICALL=3: Finalization.
  • ICALL=4: regular call in simulation.
  • ICALL=5: Expectation. Call to PK occurs when expectations are being computed (the marginal data item MRG_ has a non-zero value for some records).
  • ICALL=6: Raw data averages.
  • Special rules apply to blocks of abbreviated code that are executed when ICALL is not 2. (See Initialization-Finalization block, Simulation block, Expectation block, Data average block).

NM-TRAN will move abbreviated code that tests for ICALL=0, ICALL=1, or ICALL=3 in the $PK block to the INFN routine as part of an $INFN block. With verbatim code in the FIRST block, ICALL will never have the value 0 or 3. ICALL has the value 1 if the call to PK is the first call to PK in the problem. At this call, the THETA’s are the initial estimates; the ETA’s are undefined. Verbatim code is not moved to the INFN routine.

Global Variables in Modules

COMRES

If COMRES=1 is not present in $ABBREVIATED or $PK records, then PK-defined variables are listed in NMPRD4 and may be used in other routines and blocks of abbreviated code. The symbol COM(n) may be used on the left or the right if n refers to a reserved position in MODULE NMPRD4. Variables defined in $INFN and listed in MODULE PRINFN are also global and may be used in $PK and other blocks of abbreviated code, on the left and on the right. Variables defined by $ABBREVIATED DECLARE records are also global and may be used in $PK and other blocks of abbreviated code.

DOSTIM DOSREC(n)
  • If PK is not being called at an additional or lagged dose time, then DOSTIM = 0 and all elements of DOSREC are 0.
  • If PK is called at an additional or lagged dose time t, then DOSTIM=t.
  • DOSREC contains a copy of the dose event record which initiated the additional or lagged dose (actually, only of the final row: EVTREC(NVNT,*)). Data items may be referred to by position or by label, e.g., DOSREC(1) or DOSREC(ID). In DOSREC, TIME and all user (concomitant) data items have values from the next event record. All other NONMEM/PREDPP reserved data items have values from the initiating dose event record. (The $BIND record may be used to override this.)
A(n), TSTATE

A(n) are the latest computed compartment amounts, and TSTATE is the time at which they were computed. That is, A(n) are the amounts at the previous event time, or if at a later time, but before the time for which PK is being called, a lagged or additional dose was given, or a regular infusion was terminated, or a modeled event occurred, then A(n) are the amounts at the latest such time. If there are population ETAs, and A(n) are used in the $PK abbreviated code, then any $OMEGA records referring to ETAs explicitly used in this code should precede the $PK record, or if an $MSFI record is used, it should precede the $PK record and include the option NPOP=m. Note: If there is no verbatim code and no explicit use of a sub- scripted variable A in the $PK record, then the symbol A can be used as a data item label or as a name of a PK-defined item.

A_0FLG, A_0(n)

Signals a record to initialize a compartment amount. See Compartment Initialization Block, and A_UFLG below.

A_UFLG, A_U(n)

Before NM75, one can set the amount (using A_0) only at the “initial” state (EVID=3, EVID=4, or for the first record of an individual), as at those times A_0FLG is set to 1. For example:

1
2
3
4
$PK
IF (A_0FLG==1) THEN
A_0(3)=k03/k30
ENDIF

Any A_0(n) not defined are set to the default value 0.

Since user cannot set A_0FLG value, he cannot update amounts at any other time. To solve this problem, NM75 provides flag A_UFLG ("U" for "update") and array A_U(). Combined with MTIME, one could input a dose as follows (examples/a_uflg).:

1
2
3
4
5
6
7
8
9
  MTIME(1)=wtime		;# wtime is a given dose time
  MTDIFF=1			;# indicate MTIME has changed value
  AZTEST=A_0FLG
  IF(TSTATE==MTIME(1).AND.AZTEST==0) A_UFLG=1 # signal update when time reaches wtime
  IF(A_UFLG==1) THEN
  A_U(1)=A(1)+wdose		;# wdose is the new dose
  A_U(2)=A(2)
  A_U(3)=A(3)
  ENDIF

In fact IF(A_UFLG==1) block is optional so a more concise version is

1
2
3
4
5
6
7
MTIME(1)=wtime
MTDIFF=1
AZTEST=A_0FLG
IF(TSTATE==MTIME(1).AND.AZTEST==0) A_UFLG=1
A_U(1)=A(1)+wdose
A_U(2)=A(2)
A_U(3)=A(3)

Note how the A_UFLG event is triggered with condition TSTATE==MTIME(). Unlike A_0 that has default value 0, all A_U(n)~ for compartments n should be defined.

Reserved Variable Names

1
  IDEF IREV EVTREC NVNT INDXS IRGG GG NETAS DADT(n) E(n) EPS(n)

Storage and calling options

  • COMRES=-1. See COMRES.
  • CALLFL, see Calling protocol.

    • CALLFL=-2: PK called with every event record and at every nonevent dose time. Equivalently

      1
      2
      
      $PK (NON-EVENT)
      $PK (ADDITIONAL OR LAGGED)
    • CALLFL=-1: PK called with every event record (default).

      1
      2
      
      $PK (EVERY EVENT)
      $PK (EVERY)
    • CALLFL=0: PK called with first event record of the individual record and with every subsequent event record where the time data item differs from the time data item of the previous event record. Equivalently:

      1
      2
      
      $PK (NEW TIME)
      $PK (NEW EVENT TIME)
    • CALLFL=1: Call once per individual record. Equivalently:

      1
      2
      
      $PK (ONCE PER INDIVIDUAL RECORD)
      $PK (ONCE/IND.REC.)

    CALLFL=-2 is the default when DOSREC, DOSTIM, or MTIME are used explicitly in the abbreviated code. Otherwise, CALLFL=-1 is the default. The use of $BIND mandates CALLFL=-2.

We recommend enclose the options in parentheses. Use semicolon to separate multiple options.

1
2
3
4
  $PK (COMRES=-1 ; ONCE PER IR)
  $PK (NEW TIME)         ; same as CALLFL=0
  $PK (EVERY EVENT)      ; same as CALLFL=-1
  $PK (NONEVENT)         ; same as CALLFL=-2

Record order

Follows $SUBROUTINES and $INPUT, $MODEL (with General Nonlinear Kinetics Models ADVAN6, ADVAN8, ADVAN9, ADVAN13, ADVAN14, ADVAN15, ADVAN16, ADVAN17, ADVAN18), precedes $ERROR (if present).