Structural model - Two compartment Model for drug and one compartment model for enzyme
Route of administration - IV Infusion
Dosage Regimen - 120 mg of IV infusion with constant rate of 1 hr followed by 9 more doses of 40 mg for 30 minutes duration at the interval of 8 hrs
Number of Subjects - 1
This model gives understanding of drug pharmacokinetics and enzyme autoinduction
simultaneously after repeated IV infusion.
In this tutorial, you will learn how to build a two compartment model for a drug and one compartment model for an enzyme and simulate the model.
call the "necessary" libraries to get started.
using Pumas using Plots using CSV using StatsPlots using Random
In this two compartment model, we administer repeated dose of IV infusion to a single subject.
pk_22 = @model begin @param begin tvcls ∈ RealDomain(lower=0) tvvc ∈ RealDomain(lower=0) tvvp ∈ RealDomain(lower=0) tvq ∈ RealDomain(lower=0) tvkin ∈ RealDomain(lower=0) tvkout ∈ RealDomain(lower=0) tvE0 ∈ RealDomain(lower=0) Ω ∈ PDiagDomain(7) σ²_prop ∈ RealDomain(lower=0) end @random begin η ~ MvNormal(Ω) end @pre begin Cls = tvcls * exp(η[1]) Vc = tvvc * exp(η[2]) Vp = tvvp * exp(η[3]) Q = tvq * exp(η[4]) Kin = tvkin * exp(η[5]) Kout = tvkout * exp(η[6]) E0 = tvE0 * exp(η[7]) end @init begin Enzyme = (Kin/Kout)+ E0 end @dynamics begin Central' = -(Cls/Vc) * Central * Enzyme + (Q/Vp) * Peripheral - (Q/Vc) * Central Peripheral' = (Q/Vc) * Central - (Q/Vp) * Peripheral Enzyme' = Kin * (E0+Central/Vc) - Kout * Enzyme end @derived begin cp = @. Central/Vc dv ~ @. Normal(cp, sqrt(cp^2*σ²_prop)) end end
PumasModel Parameters: tvcls, tvvc, tvvp, tvq, tvkin, tvkout, tvE0, Ω, σ²_prop Random effects: η Covariates: Dynamical variables: Central, Peripheral, Enzyme Derived: cp, dv Observed: cp, dv
Hereby Parameters are provided for the simulation. tv
represents the typical value for parameters.
tvcls - Typical Value Clearance at Steady State (L/hr)
tvvc - Typical Value Central Volume of Distribution (L)
tvvp - Typical Value Peripheral Volume of Distribution (L)
tvq - Typical Value Distribution Clearance (L/hr)
tvkin - Input Rate Constant for Enzyme (hr⁻¹)
tvkout - Output Rate Constant for Enzyme (hr⁻¹)
tvE0 - Initial Enzyme Concentration
Ω - Between Subject Variability
σ - Residual errors
param = (tvcls = 0.04, tvvc = 150.453, tvvp = 54.0607, tvq = 97.8034, tvkin = 0.0238896, tvkout = 0.0238896, tvE0 = 132.864, Ω = Diagonal([0.0,0.0,0.0,0.0,0.0,0.0,0.0]), σ²_prop = 0.005)
(tvcls = 0.04, tvvc = 150.453, tvvp = 54.0607, tvq = 97.8034, tvkin = 0.023 8896, tvkout = 0.0238896, tvE0 = 132.864, Ω = [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.005)
Dosage Regimen - 120 mg of IV infusion with constant rate of 1 hr followed by 9 more doses of 40 mg for 30 minutes duration at the interval of 8 hrs
ev1 = DosageRegimen([120000,40000], time=[0,8], duration=[1,0.5], cmt=[1,1], addl=[0,8], ii=[0,8]) sub1 = Subject(id=1, events=ev1)
Subject ID: 1 Events: 20
Lets simulate for plasma concentration with the specific observation time points after IV.
Random.seed!(123) sim_sub1 = simobs(pk_22,sub1,param,obstimes=0.00:0.01:96) df1 = DataFrame(sim_sub1)
Use the DataFrame for Plotting where
cp - Predicted concentration
dv - Observed concentration
df1_dv = filter(x -> x.time in [0.25,0.5,1,1.25,1.5,3,5,7,7.75,8.5,15.75,16.5,23.99, 24.5,31.75,32.5,39.75,40.5,47.99,48.5,55.75,56.5,63.75,64.5,72,72.25,72.5,72.75, 73,73.5,74.5,76.5,78.5,80.5,84.5,90.5,96], df1) @df df1 plot(:time, :cp, label="Pred - Conc",title="Auto Induction", linestyle=[:solid], linewidth=3, xlabel="Time (hr)", ylabel="Concentration (mcg/L)", color=[:blue], xlims=(-0.5,100), xticks=[0,10,20,30,40,50,60,70,80,90,100], yticks=[0,100,200,300,400,500,600,700], ylims=(0,700)) @df df1_dv scatter!(:time, :dv, label="Obs - Conc", color=[:red])