These exercises teach common workflows which involve Pumas.jl. This exercise worksheet is meant to be a living document leading new users through a deep dive of the Pumas.jl feature set. If you have further suggestions or want to contribute new problems, please open an issue or PR at the PumasTutorials.jl repository.

The exercises are described as follows:

Exercise 1 takes you through simulating a compartmental system in Pumas. The user will gain experience in writing a model using the Pumas Domain Specific Language (DSL), setting up a dosing regimen and population, simulating the model into the designed population and finally plotting the results of the simulation.

Exercise 2 takes the user through performing an Non-compartmental analysis (NCA). The user will get familiarized with reading data sets in a spread sheet format (e.g, .csv) or as the simulated output as in exercise 1 and perform a simple NCA analysis.

Exercise 3 introduces the user to perform a non-linear mixed effects modeling estimation (NLME) on pharmacokinetic data. The user will learn how to read and set up the data for NLME estimation, fit the model, infer and inspect the results of the model fit.

Exercise 4 introduces the user to various post-processing steps of model fitting, including running a visual predictive check (VPC), using the final model fits to peform simulation into an alternate dosing regimen or populaion of interest.

In this poblem, we will walk through the basics of writing a model with Pumas.jl. The pharmacokinetics after an oral dose are commonly described by a first-order process. In our example we will use a linear one-compartmental system for elimination of the drugs.

Let's understand the system by setting up the differential equation or the analytical solution that describes the systems

\[ \begin{align} \frac{dDepot}{dt} &= -K_a.Depot\\ \frac{dCentral}{dt} &= K_a.Depot - (CL/V).Central\end{align} \]

The analytical form of this equation to calculate the concentration, `Cp`

at any given time can be written as

\[ Cp = \frac{F \times Dose \times K_a}{V (K_a-K_{el})}(e^{-K_{el} t} - e^{-K_a t}) \]

where the parameters are: `Ka = 1 hr-1`

, `CL = 1 L/hr`

, `V = 20 L/hr`

.

Setting up a dosing regimen and population of subjects. Go through the section on Generating and simulating populations in the tutorials to set up a population of 24 subjects that receives 100 mg dose via the mouth and assign a random body weight to each subjects

Write up a first-order absorption model where body weight is a covariate on `CL`

and `V`

. understand the different steps of writing up a model by referring to the documentation on models.

Perform the simulation by using the `simobs`

function. The details on the use of `simobs`

can be seen in the documentation on simulation and by looking at one of the tutorials. Finish by plotting the result of the simulation.

Use the dataset generated from Problem 1 that is stored as a CSV file here to read in the data using the `read_nca`

function and generate a NCA report. You can know more about how to do this by looking at one of the NCA tutorials

The same dataset that was read in for NCA analysis will be used for fitting a NLME model. You can learn more on how to read the data in for NLME estimation using `read_pumas`

by following the tutorial in the readme or the documentation

Read the dataset and evaluate the Population

Fit the model using FOCEI() estimation

Infer the results of your `fit`

Inspect the results of your `fit`

Using the `fit`

object above, we will now perform model validation using Visual predictive checks `vpc`

. Details on how to use the `vpc`

command are listed in the documentation or you can look at the last part of the readme