In QSP, the systems of interest grow quickly in scope. Collecting enough clinical trial data to explore and understand their mechanisms fully, is often infeasible or even impossible. This imbalance of model complexity and available data can create issues: when learning model parameters from data, often many parameters can describe given data sufficiently well which results in a high uncertainty in the parameter estimation. A virtual population (VP) is designed to address this problem. Each model parameter combination that describes given data sufficiently well, is considered a virtual patient. A collection of virtual patients is considered a VP. Virtual populations emulate the diversity in patients and we can use them to explore variability in effects in clinical trials.
Note: From a more mathematical perspective we can connect the creation of VPs to unidentifiable functions. As a reminder, a function f:X→Y is identifiable, if, and only if, for all x in X, f(x)=y implies that there exists no x’ where f(x’)=y. If we think of the output generation of a QSP model as a non-identifiable f and y is the given observed trial data, a VP consists of parameter combinations x’ that can produce y (with some error tolerance).
Pumas-QSP focuses on providing the methodology to create VPs and perform GSA in a high performance and user friendly manner. It’s objective is that it allows you to focus on the semantics of the model and the interpretation of its behaviour. Clear and flexible code structures provide you with the opportunity to identify wider connections as well as narrow in on areas of interest. At the same time, automatic, under the hood parallelizations, enable you to formulate robust hypothesis as it is providing you with the necessary performance to test detailed and explore options widely.
Pumas-QSP is written in Julia and therefore brings all the Julia language advantages with it: this includes, for example, that it has an easy to read and write syntax and a high base line performance. Additionally, Pumas-QSP is nicely integrated in the existing package ecosystem of Julia. Specifically relevant are the connections to the following packages:
- DataFrames.jl allows us to manipulate tabular data and hence is useful to handle trail data stored in e.g. csv files.
- ModelingToolkit.jl provides a modeling framework for high-performance symbolic-numeric computation hence allows for smooth model definitions and model handeling.
- DifferentialEquations.jl can be used to numerically solving differential equations with high efficiency.
- GlobalSensitivity.jl provides several methods to quantify the uncertainty in the model output with respect to the input parameters of the model.
- Plots.jl is a plotting API and toolset that can be used to intuitively analyse and visualise model behaviour and output.