For modeling a time-delay as a sequence of transit compartments, there is the “transit” statement:
transit(<final compartment name>
, <mean transit time expression>
, <number of transit stages expression>
[, max=nnn]
[, in=<input rate expression>]
[, out=<output rate expression>]
)
For example, the following code models extravascular input with delay:
transit(Aa, mtt, ntr, max=50, out=-Aa*Ka)
dosepoint(Aa)
deriv(A1=Aa*Ka-A1*Ke)
Aa is the name of the final compartment in a hidden chain of 50 compartments.
mtt is the structural parameter representing the mean transit lag time of drug compound in the chain.
ntr (minimum 0) is the structural parameter representing one less than the number of transit stages. Fractional values as well as integer are accepted. Fractional values of ntr are modeled by logarithmic interpolation, corrected to closely approximate a closed-form solution. The role of the ntr parameter is to control the sigmoidicity of the rise of Aa in response to a single dose, where higher values of ntr indicate faster rise time.
The flow rate parameter between compartments is ktr=(ntr+1)/mtt.
out is additional flow rate out of (or into) the final compartment Aa.
in, if provided, represents additional flow rate into the same upstream compartment that receives doses.
Care should be taken in specifying “max=nnn”, because nnn determines the number of additional hidden differential equations. The default is 50, and the maximum is truncated at 200. ntr is truncated to range between zero and nnn.
The following images illustrate how this can be visualized.
Model for ntr=0 (the smallest possible value)
Model for ntr=1
Model for ntr=2
Model for ntr=more
The following model is implemented with extra upstream compartments, and ntr effectively chooses which upstream compartment will be considered compartment 0 and will receive doses:
Doses go into compartment 0, as well as any additional rate given by the in keyword. The value is read from the final compartment, which can have a supplemental output rate given by the out keyword. (If artificial dosing is done, such as by saving Aa=Aa+d in a sequence statement, it is understood as adding d to compartment 0, not to compartment Aa.)
The following model shows how the interpolation is done, where x is an auxiliary compartment.
Disclaimer: In the case where ntr is an integer, the transit statement is completely accurate for all inputs. If ntr is not an integer but dosing consists of bolus doses sufficiently separated in time, it is also completely accurate. However, if ntr is a small non-integer, like 0.5, and multiple boluses occur close together or an infusion is given, the output in Aa is under-predicted by as much as 5%. The under-prediction becomes progressively smaller as ntr increases but is always zero if ntr is an integer. This is an artifact of the interpolation formula used for fractional values of ntr.
Legal Notice | Contact Certara
© Certara USA, Inc. All rights reserved.