Structural model - 1 compartment with first order absorption (without/with Lag time)
Route of administration - Oral
Dosage Regimen - 100 μg Oral
Number of Subjects - 1
By the application of the present model, we will learn how to simulate model for first order input model with and without lag-time.
In this exercise you will learn how to
Simulate an Oral One Compartment (without/ with lag-time). Assuming oral bioavailability of 100%. The interpretation V includes bioavailability (i.e., it is really estimating V/F).
Write a differential equation for a one-compartment model
call the "necessary" libraries to get start.
using Random using Pumas using PumasUtilities using CairoMakie
In this one compartment model, we administer dose in Depot compartment at time= 0
.
pk_02 = @model begin @metadata begin desc = "One Compartment Model with lag time" timeu = u"minute" end @param begin "Absorption rate constant (1/min)" tvka ∈ RealDomain(lower=0) "Elimination rate constant (1/min)" tvkel ∈ RealDomain(lower=0) "Volume (L)" tvvc ∈ RealDomain(lower=0) "Lag Time (mins)" tvlag ∈ RealDomain(lower=0) Ω ∈ PDiagDomain(4) "Proportional RUV" σ²_prop ∈ RealDomain(lower=0) end @random begin η ~ MvNormal(Ω) end @pre begin Ka = tvka * exp(η[1]) Kel = tvkel * exp(η[2]) Vc = tvvc * exp(η[3]) end @dosecontrol begin lags = (Depot=tvlag * exp(η[4]),) end @dynamics begin Depot' = -Ka*Depot Central' = Ka*Depot - Kel*Central end @derived begin """ PK02 Concentration (ug/L) """ cp = @. Central/Vc """ PK02 Concentration (ug/L) """ dv ~ @. Normal(cp, sqrt(cp^2*σ²_prop)) end end
PumasModel Parameters: tvka, tvkel, tvvc, tvlag, Ω, σ²_prop Random effects: η Covariates: Dynamical variables: Depot, Central Derived: cp, dv Observed: cp, dv
The compound follows a one compartment model, in which the various parameters are as mentioned below:
$Ka$ - Absorption Rate Constant (min⁻¹)
$Kel$ - Elimination Rate Constant(min⁻¹)
$Vc$ - Central Volume of distribution (L)
$tlag$ - Lag-time (min)
$Ω$ - Between Subject Variability
$σ$ - Residual error
param = [ (tvka = 0.013, tvkel = 0.013, tvvc = 32, tvlag = 0, Ω = Diagonal([0.0,0.0,0.0,0.0]), σ²_prop = 0.015), (tvka = 0.043, tvkel = 0.0088, tvvc = 32, tvlag = 16, Ω = Diagonal([0.0,0.0,0.0,0.0]), σ²_prop = 0.015) ]
In this section the Dosage regimen is mentioned:
Oral dosing of 100 μg at time=0
for a single subject
ev1 = DosageRegimen(100, time = 0, cmt = 1) pop = map(i -> Subject(id = i, events = ev1), ["1: No Lag", "2: With Lag"])
Population Subjects: 2 Observations:
When simulating a single subject, we can pass in an array of parameters to visualize multiple curves for the same subject.
Random.seed!(123) sim = map(zip(pop, param)) do (subj, p) return simobs(pk_02, subj, p, obstimes = 0:1:400) end
Simulated population (Vector{<:Subject}) Simulated subjects: 2 Simulated variables: cp, dv
From the plot below, we can clearly identify the subject with and without lag time.
f, a, p = sim_plot(pk_02, sim, observations = :cp, color = :redsblues, linewidth = 4, axis = (xlabel = "Time (minutes)", ylabel = "PK02 Concentrations (ug/L)", xticks = 0:50:400,)) axislegend(a) f