MonolixSuite demo

On this page, you will find a summary of the MonolixSuite 2020 demonstration given. The full presentation (slides) can be downloaded here.

If you have any questions/remarks/comments, please contact our application team ( or Jonathan Chauvin (

MonolixSuite 2020: 1 Language – 3 Main Applications


Mlxtran: Model programming language

Mlxtran is a simple declarative language that allows you to define and use the same model for exploration, parameter estimation and simulation. A model described using the Mlxtran language is understandable for both a modeler and a statistician.

  • Typical PK/PD models are built-in
  • Lots of macros for pharmacokinetic processes
  • Complex models via equations (ODEs, DDEs)
  • Possibility to define a distribution or an observation in one line
  • Continuous, count, categorical and time-to-event observations are supported
  • documentation:

Common Data set for all applications

Data set definition for all applications


  • Data viewer also integrated in Monolix plots tab after creating a project
  • plot your data (discrete and continuous) to visualize trends or detect outliers
  • explore the behavior depending on covariates, individuals, etc. via easy filtering and splitting
  • documentation:


  • non-compartmental (NCA) and compartmental analysis (CA) using industry-standard methods
  • simple workflow with automatic generation of result tables and plots
  • available as graphical interface and as R package
  • documentation:


  • estimate your parameters in a user-friendly, fast and robust way, using cutting-edge statistical methods (SAEM)
  • efficiently diagnose your model using convenient build-in graphics
  • documentation:


  • have an overview of all your Monolix runs in table and graphical format
  • compare runs side by side
  • run single tasks or full projects
  • documentation:


  • Advanced simulator of clinical trials and decision-making tool
  • Easy-to-use and interactive interface
  • Intuitive workflow
  • reuse a Monolix model and play with the design, covariates, trial size, etc
  • Flexible in building simulation scenarios
  • Advanced computational capabilities with C++ engine
  • Immediate visual feedback
  • Export of plots and results


Download and license

The MonolixSuite 2020R1 can be downloaded here. At the end of the installation, please enter the activation key that has been sent per email. The Rsmlx package (profile likelihood, bootstrap, etc) can also be installed via the R command line as explained here.

Demonstration overview and material

The demonstration is based on a dense PK/PD data set for Remifentanil. The PK concentration and the EEG as PD have been measured.

In a first part, we show the elaboration of a PK model, using Monolix and Datxplore. In a second part, we present the results of a joint PK/PD model. The final joint model is then re-used to perform a variety of simulations using Simulx in R.

Data visualization with Datxplore

The data set format is very close to the Nonmem format. In this example, a column called “YTYPE” enables to distinguish the PK from the PD data using two different identifiers. The full data set is loaded into Datxplore for visualization, and standard header names are recognized automatically.

The data can be visualized individual per individual, split/colored/filtered according to the covariates. Covariates can also be plotted versus each other. Datxplore helps to identify outliers, determine potential models for the data set and detect covariate correlations.

This data visualization can also be done directly in the Monolix data viewer. Doing the visualization separately in Datxplore enables you to save it without defining a structural model for the project.

PK model development with Monolix

We start with the modeling of the PK concentration only. We start a new project in Monolix, load the data and the columns types are assigned. We choose a 2-cpt (V,Cl,Q,V2) model from the library.

Initial parameter values can be set using the “check initial estimates” tab, which shows an overlay of the population prediction and individual data. The goal is to choose reasonable initial estimates to speed up the convergence. Even if Monolix is pretty robust with respect to initial parameter values, it is a good practice to try to find population parameter values so that the prediction displays the key features of the model.

Next, the statistical model (error model and parameter distribution) is set using the GUI. Different estimation tasks can then be run: estimation of the population parameters (with SAEM algorithm), estimation of the individual parameters (EBEs), estimation of the standard errors (via calculation of the Fisher Information matrix), estimation of the log-likelihood.

The built-in diagnostic plots and statistical tests guide the step-wise improvement of the model. After we first run, we see a mis-specification for the structural model in the obs versus pred and individual fits plots, suggesting the need for a third compartment. We thus pick a 3-cpt model form the library. The improvement of the model can be followed in Sycomore, our app for model selection, by comparing the plots and corrected BIC values.

In Sycomore, parent-children relationships can be defined between Monolix runs, and the runs can be viewed in a table or as a graphical tree. When a couple of runs are selected, they can be compared in detail (LL value, estimated parameters and uncertainty, diagnostic plots, etc). Projects can be run in batch-mode and selected tasks which have not run yet can also be run from the comparison tab.


Guided by the plots and statistical tests, we added correlations between random effects and covariates to the model via the GUI. Instead of performing the covariate search step by step manually in Monolix, we used the novel COSSAC automatic covariate search procedure implemented in Monolix. The typical SCM method is also available but COSSAC runs faster. It is possible to lock in or lock out covariate effects to force them or prevent them to be tested during the search.

PK/PD model development

We next develop a joint model for the PK and the PD. PK/PD models are available in the library but we decide to write the model ourselves for didactic purposes. For instance for a turnover model written with ODEs, the model in mlxtran language would read:

input = {Cl, V1, Q2, V2, Q3, V3, EEG0, Imax, IC50, gam, ksyn}


; parameter transformations
V = V1
k = Cl/V1
k12 = Q2/V1
k21 = Q2/V2
k13 = Q3/V1
k31 = Q3/V3
kdeg = ksyn/EEG0

; this macro calculates the concentrations Cc and Ce for a 3 compartment model. Model to use is recognized using parameters names.
{Cc} = pkmodel(V, k, k12, k21, k13, k31)

; initialization of the ODE system

ddt_EEG = ksyn * (1 - Imax * Cc^gam/(Cc^gam + IC50^gam)) - kdeg*EEG

; the first output Cc is matched to observations with YTYPE=1, the second output EEG is matched to observations with YTYPE=2
output = {Cc,EEG}

Note that in the 2020 version, the “observation id” of the data set are matched by alphabetical order to the two model outputs. A dedicated pane in the structural model tab allows to modify this mapping.

To estimate the parameters for the PD part there are several methods, you can re-estimate the PK and PD parameters all together, using the last estimates coming from the estimation with the PK data. This is called a joint approach.

You can also use an intermediate approach where you will fix the previously estimated population PK parameters, and estimate only the population PD parameters, this is what we have done here. The individual PK parameters will be sampled during SAEM but always from the same fixed distribution, whereas the distribution of the PD population parameters will be updated at each step.

If the PKPD model is too big and takes too much time to compute you can also use a sequential approach. In this approach all individual parameters for the PK are fixed and directly re-used instead of being re-sampled from a fixed distribution. For this you can copy the EBEs for the PK parameters from the PK project to the data set and write in the structural PKPD model that they should be used as regressors. In that case only the EBEs are used for individual parameters, so it can underestimate the error in the predictions in case of shrinkage.


New treatment simulations with Simulx

The final PKPD monolix project can be exported to Simulx in order to perform new simulations.

We want to predict what would happen with another treatment. Indeed the trial only included infusion up to 20 min long, but we would like to know what happens if the drug is used for sedation during a surgery that could be for example 2h long. And in particular we would like to know if the spectral edge frequency could keep a value below 15 which is needed for the patient to be sufficiently sedated.

When we export the project to Simulx, elements like model, population or individual parameters, covariates, treatments are automatically defined to create an independent project. Here for example you can see the list of all individual parameters (EBEs) which have been previously estimated in Monolix.

We first go to the exploration tab to get an idea of a reasonable dose to give for 2h such that a typical individual gets a spectral edge frequency below 15 Hz. Apparently 3000 ug is enough for a typical individual to reach the target.

Now we want to check how a population similar to the one in our dataset would respond to this new treatment. We add the treatment to the definition tab, we duplicate it to create a second treatment with a higer dose and go to the simulation tab to simulate a whole population. We decide to simulate a smooth prediction by selecting the prediction EEG as an output. We define 2 simulation groups, one with each treatment.

After running we get an output distribution. For for the group with the second treatment more individuals reach a frequency below 15, we can use visual cues to see this more easily with a target line.

To post process this output and get a quantitative outcome we come back to the simulation tab. We define an outcome which will check if the spectral edge frequency reaches values below the target of 15Hz. The outcome is a value for each individual, which in this case is a Boolean true or false. We define an endpoint which is the percentage of individuals reaching the target. What is the uncertainty of this percentage? We use 10 replicates of the simulation to assess the uncertainty of the endpoint. We add a group comparison with the group receiving 3000ug as reference.


The endpoint distribution shows the percentage of individuals in target for the two treatments, with an uncertainty over replicates. In the endpoints section of the results tab, we find the outcome for all simulated individuals which is a true false value in our case. The group comparison checks if the second treatment is better than the first one with respect to the two outcomes defined. Success is defined if the p value is lower than .05. In our case the second treatment is significantly better than the first one for 7 replicates out of 10.

NCA and CA with Pkanalix

The same data set can be used for NCA and CA analysis in our fast and user-friendly app Pkanalix. We can choose which obs id to use, for example here we choose the PK. We can also specify the units.

In the NCA task we can choose settings for calculations such as the integral method used for calculation of the AUC. We can choose among many industry-standard parameters which ones to compute. Before computing them we can check and change how the lambda_z is calculated in a specific tab.

For the CA task we can select a model from the simple pk library. By default, the model will be fitted to each of the individuals separately, so we get a parameter vector per individual. We can also use a pooled fit to fit a single parameter vector to all the data points at the same time. Initial values can be selected as in monolix and set quickly with the auto init button.

After running the NCA or CA, similar result plots and result tables as for individual parameters in Monolix. Note that we do not get any information on the typical behavior of the population. We would be able to make predictions with this model for each of the individuals separately but not for a whole new population, as we do it with Monolix. However if the project reaches a point where it becomes necessary, we can easily export the project to Monolix and we will jump directly to the statistical model tab since the data, structural mode, and initial estimates are already defined.

Material download

All presented projects are available in the following zipped folder. For each project: open the corresponding application, got to Project > Load and select the project file. Datxplore project files have extension. datxplore, Monolix project files .mlxtran, Simulx project files .smlx, and Pkanalix project files .pkx.

Click here to download the demo material.

Geraldine CelliereMonolixSuite demo