Introduction
Different components of the model are implemented in different sections. To run, a project must have at least:
- a section <MODEL> that defines the model you want to explore. This section contains at least the structural model but can also contain the inter-individual variability and the covariates definition. To see how to build a model in Mlxtran, click here.
- a section <PARAMETER> that defines the parameters used in the model, and which value will be available in the graphical interface as sliders.
- a section <OUTPUT> that defines the variables that you want to look at and the time points at which the model will be simulated.
To show exactly how to define it, let’s see the following example. This example is meant to show the general structure, while the construction on the model will be detailed in the following sub-section of this user guide.
Example
Here is a very simple example where we want to explore a simple linear equation of the form y=at+b where t is the time and a and b are parameters. First, we have to define the model. For that, we use the section <MODEL> and define the model in the [LONGITUDINAL] subsection. The construction of a [LONGITUDINAL] section is defined in the Mlxtran documentation here. In the project, it should be written in the following form:
<MODEL> [LONGITUDINAL] input = {a,b} EQUATION: y = a*t+b
Second, we have to define the parameters we are gonna play with and their reference value. In that case, two parameters a and b with initial conditions a=1 and b=2 write:
<PARAMETER> a = 1 b = 2
Finally, we have to define the output we would like to display. Both names (through a list) and the timing have to be defined.
<OUTPUT> list = {y} grid = 0:.1:100
Notice that an input parameter of block ([INDIVIDUAL] and [LONGITIDINAL]) can not be used as an output.
At the end, to full project looks like that:
<MODEL> [LONGITUDINAL] input = {a,b} EQUATION: y = a*t+b <PARAMETER> a = 1 b = 2 <OUTPUT> list = {y} grid = 0:.1:100
The best practices associated with the model definition and implementation in the <MODEL> section are largely detailed in other sections of this documentation. Therefore, we focus here on the <PARAMETER> and <OUTPUT> sections.
Best practices for <PARAMETER> section
- If a parameter is not used in the model but defined in the subsection <PARAMETER>, the exploration will run but a warning saying that “a parameter ‘unused_param’ is not defined in the model”.
- No computation is allowed in the <PARAMETER> section. Therefore,
a=1+2
is not possible, it has to be a numerical value. - No identification is allowed in this section. Therefore,
<PARAMETER> a = 1 b = a
is not allowed. If such identification is needed, it can be done directly in the model.
Best practices for <OUTPUT> section
- The grid definition represents the time where the user will see the outputs. The ODE/DDE solver may evaluate the model at shorter time intervals.
- Several outputs can be considered. They have to be listed in the list of the section <OUTPUT> , for example
list={output1, output2, ...}
. All the outputs will share the same time grid. - If an output of the list has not been previously defined, an error will occur and is explicitly displayed to the user.
- The grid has not to be regular. One can define explicitly the grid, for example
grid={t_1, t_2, ..., t_n}
. We strongly recommend to define the timest_i
as a strictly increasing suite for readability. - An hybrid version of the grid definition such as
grid={t_1a:dt_a:t_Na, t_1b:dt_b:t_Nb}
is not supported and generates errors.