Depot macro


The macro depot is a multipurpose macro that can accommodate different types of administrations. It is typically used together with ODE systems to define how the administrations from the data set are linked with the model variables. It is the only macro that can be used with ODEs for administration without defining a compartment. With the macro depot, a bolus, an infusion (with INFUSION RATE or INFUSION duration defined in the data set), a zero order absorption, or a first order absorption (with or without transit process) can be defined.

We encourage the user to use all the fields in the macro to guarantee no confusion between parameters.

As for other macros, depot must be used in a block PK:, while ODEs must be defined in a block EQUATION:.



The depot macro can be used for bolus doses, infusions (with INFUSION RATE or INFUSION duration defined in the data set), zero-order absorptions, and first-order absorptions. Some arguments are common for the three types of administrations, some are specific.

The arguments common to bolus, zero-order and first-order absorption are:

  • adm: Administration type of doses subject to the absorption process. Its default value is 1. Alias: type. Thus, when defining a treatment in Mlxplore for example, instead of defining a target, the user should define a type and apply the dedicated absorption process on it.
  • target: Name of the ODE variable that is targeted by the administration. Mandatory.
  • Tlag: Lag time before the absorption. Its default value is 0.
  • p: Fraction of the absorbed amount. It can affect the effective rate of the absorption, not its duration. p can take any positive value (including > 1). Its default value is 1.

Specific arguments for bolus doses:

For bolus doses, no additional argument is needed.

The following code defines a bolus for doses of type 1 (e.g ADM=1 in the data set), applied to the ODE variable Ad, with a delay Tlag and a fraction absorbed F :

depot(type=1, target=Ad, Tlag, p=F)

Specific arguments for zero-order absorption (i.e infusion):

To define a zero-order absorption, the following argument must be added:

  • Tk0: Duration of the zero order absorption. Mandatory to define zero-order absorption.

The following code defines a zero-order absorption process of duration Tk0, for doses of type 2, applied to the ODE variable Ac, without lag time (Tlag=0 when not specified) and with the entire dose being absorbed (p=1 when not defined):

depot(type=2, target=Ac, Tk0)

Specific arguments for first-order absorption:

To define a first-order absorption, the following arguments can be added:

  • ka: Rate of the first order absorption. Mandatory to define first-order absorption.
  • Ktr: Transit rate.
  • Mtt: Mean transit compartments time for the absorption.

The following code defines a first-order absorption process with rate ka, for doses of type 1 (type=1 when not specified), applied to the ODE variable Ac, with a lag-time Tlag of 2.1, and only 30% of the dose being absorbed:

depot(target=Ac, ka, Tlag=2.1, p=0.3)

Note: In case of transit compartments and multiple doses, the amounts in the depot, transit and absorption compartments are reset at each new doses. Thus the implementation is valid only if the dose is fully absorbed before the next dose administration. The amount in the central (and possibly other compartments) is not reset and can accumulate.


  • The value after type= must be an integer.
  • The value after target= must be a string representing the ODE variable
  • The inputs after Tlag=, p=, Tk0=, ka=, Ktr=, Mtt= can be either a
    • Double
    • Input parameter
    • Variable
    • Calculations are not supported
  • The associated treatment or administration can be defined with a rate or an infusion timing from the data set (RATE and TINF column-types in the data set). The rules are the same as for the iv macro.