Structural model - Two compartment model with non-linear elimination from hepatic compartment
Route of administration - Oral and IV on separate occasion
Dosage Regimen - 2 μmol/kg : IV and 6 μmol/kg : Oral
Number of Subjects - 1
Semi-physiologic model with elimination from hepatic compartment and dose administered by IV bolus. The drug follows a two compartment model. This data was modeled taking into account the hepatic elimination component and hepatic blood flow. Hepatic distribution and elimination from liver is modeled as an additional compartment with physiological values of blood flow reported from literature. Oral dose administered into a Depot. This Depot compartment was connected to the liver compartment.This study was conducted with an Oral suspension of 6 μmol/kg and IV bolus of 2 μmol/kg.
The exercise aims to simulate data using a two compartment model and an additional hepatic compartment. The elimination is non-linear metabolic clearance from the liver. In case of oral administration the administered dose reaches hepatic compartment with a lag-time.
Call the "necessary" libraries to get started
using Random using Pumas using PumasUtilities using CairoMakie
This model is written for both Oral and IV dosing regimen
pk_09 = @model begin @metadata begin desc = "Semi-Physiologic Model" timeu = u"hr" end @param begin "Volume of Central Compartment (L/kg)" tvvc ∈ RealDomain(lower=0) "Inter-compartmental Clearance (L/hr/kg)" tvq ∈ RealDomain(lower=0) "Volume of Peripheral Compartment (L/kg)" tvvp ∈ RealDomain(lower=0) "Maximum Metabolic Rate (μmol/hr/kg)" tvvmax ∈ RealDomain(lower=0) "Michaelis Menton Constant (μmol/L)" tvkm ∈ RealDomain(lower=0) "Absorption Rate Constant (hr⁻¹)" tvka ∈ RealDomain(lower=0) "Lag-time (hr)" tvtlag ∈ RealDomain(lower=0) "Fraction of drug absorbed" tvfa ∈ RealDomain(lower=0) Ω ∈ PDiagDomain(8) "Proportional RUV" σ²_prop ∈ RealDomain(lower=0) end @random begin η ~ MvNormal(Ω) end @pre begin Vc = tvvc * exp(η[1]) Q = tvq * exp(η[2]) Vp = tvvp * exp(η[3]) Vmax = tvvmax * exp(η[4]) Km = tvkm * exp(η[5]) Ka = tvka * exp(η[6]) Qh = 3.3 Vh = 0.02 end @dosecontrol begin lags = (Depot = tvtlag * exp(η[7]),) bioav = (Depot = tvfa * exp(η[8]),) end @vars begin VMKM := Vmax*(Hepatic/Vh)/(Km + (Hepatic/Vh)) end @dynamics begin Depot' = - Ka*Depot Hepatic' = Ka*Depot -(Qh/Vh)*Hepatic + (Qh/Vc)*Central - VMKM Central' = (Qh/Vh)*Hepatic - (Qh/Vc)*Central -(Q/Vc)*Central + (Q/Vp)*Peripheral Peripheral' = (Q/Vc)*Central - (Q/Vp)*Peripheral end @derived begin cp = @. Central/Vc """ Observed Concentration (ug/L) """ dv ~ @. Normal(cp, sqrt(cp^2*σ²_prop)) end end
PumasModel Parameters: tvvc, tvq, tvvp, tvvmax, tvkm, tvka, tvtlag, tvfa, Ω, σ²_prop Random effects: η Covariates: Dynamical variables: Depot, Hepatic, Central, Peripheral Derived: cp, dv Observed: cp, dv
Parameters provided for simulation. tv represents the typical value for parameters.
$Vc$ - Volume of Central Compartment (L/kg)
$Q$ - Intercompartmental Clearance (L/kg)
$Vp$ - Volume of Peripheral Compartment (L/kg)
$Vmax$ - Maximum Metabolic Rate (μmol/hr/kg)
$Km$ - Michaelis Menton Constant (μmol/L)
$Ka$ - Absorption Rate Constant (hr⁻¹)
$fa$ - Fraction of drug absorbed
$tlag$ - lag time (hr)
param = (tvvc = 0.34, tvq = 1.84, tvvp = 0.38, tvvmax = 0.13, tvkm = 0.31, tvka = 11.3, tvfa = 0.38, tvtlag = 0.062, Ω = Diagonal([0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]), σ²_prop = 0.00)
(tvvc = 0.34, tvq = 1.84, tvvp = 0.38, tvvmax = 0.13, tvkm = 0.31, tvka = 1 1.3, tvfa = 0.38, tvtlag = 0.062, Ω = [0.0 0.0 … 0.0 0.0; 0.0 0.0 … 0.0 0.0 ; … ; 0.0 0.0 … 0.0 0.0; 0.0 0.0 … 0.0 0.0], σ²_prop = 0.0)
Dose of 6 μmol/kg is administered orally at time=0
ev1 = DosageRegimen(6, time = 0, cmt = :Depot) sub1 = Subject(id = "1: PO", events = ev1)
Subject ID: 1: PO Events: 1
Dose of 2 μmol/kg is administered as IV-bolus at time=0
ev2 = DosageRegimen(2, time = 0, cmt = :Central) sub2 = Subject(id = "2: IV", events = ev2)
Subject ID: 2: IV Events: 1
Random.seed!(123) sim_sub1_oral = simobs(pk_09, sub1, param, obstimes = [0.08333,0.25,0.5,1,2,4,6,8,23])
Random.seed!(123) sim_sub2_iv = simobs(pk_09, sub2, param, obstimes = [0.0056,0.03333,0.13333,0.25,0.75,1,2,3,4,6,8,10,12,15,20,23])
f, a, p = sim_plot(pk_09, [sim_sub1_oral, sim_sub2_iv], observations=:cp, color = :redsblues, linewidth = 4, axis = (yscale = log10, xlabel = "Time (hr)", ylabel = "Concentrations (ug/L)", xticks = 0:5:25)) axislegend(a) f