Structural model - Two compartment disposition model with nonlinear elimination
Route of administration - IV infusion
Dosage Regimen - 0.4g/Kg (i.e.,28g for a 70Kg healthy individual), infused over a time span of 30 minutes
Number of Subjects - 1
In this model, you will learn -
To build Two compartment disposition model, the drug is given as Intravenous Infusion
which follows Michaelis Menten Kinetics.
To estimate the fundamental parameters involved in building the model.
To apply differential equation in the model as per the compartment model.
To design the dosage regimen for the subjects and simulate the plot.
In this tutorial, you will learn how to build Two Compartment disposition model with Non-linear elimination following Intravenous infusion and simulate the model for single subject and single dosage regimen.
call the "necessary" libraries to get started
using Pumas using CSV using Plots using StatsPlots using Random
In this two compartment model, we administer dose on Central compartment.
pk_18 = @model begin @param begin tvvmax ∈ RealDomain(lower=0) tvkm ∈ RealDomain(lower=0) tvQ ∈ RealDomain(lower=0) tvvc ∈ RealDomain(lower=0) tvvp ∈ RealDomain(lower=0) Ω ∈ PDiagDomain(5) σ²_prop ∈ RealDomain(lower=0) end @random begin η ~ MvNormal(Ω) end @pre begin Vmax = tvvmax * exp(η[1]) Km = tvkm * exp(η[2]) Q = tvQ * exp(η[3]) Vc = tvvc * exp(η[4]) Vp = tvvp * exp(η[5]) end @dynamics begin Central' = - (Vmax/(Km+(Central/Vc))) * Central/Vc + (Q/Vp) * Peripheral - (Q/Vc) * Central Peripheral' = - (Q/Vp) * Peripheral + (Q/Vc) * Central end @derived begin cp = @. Central/Vc dv ~ @. Normal(cp, sqrt(cp^2*σ²_prop)) end end
PumasModel Parameters: tvvmax, tvkm, tvQ, tvvc, tvvp, Ω, σ²_prop Random effects: η Covariates: Dynamical variables: Central, Peripheral Derived: cp, dv Observed: cp, dv
The parameters are as given below. tv
represents the typical value for parameters.
Vmax - Maximum rate of elimination (mg/hr)
Km - Michaelis-Menten rate constant (mg/L)
Q - Intercompartmental Clearance (L/hr)
Vc - Volume of Central Compartment (L)
Vp - Volume of Peripheral Compartment (L)
Ω - Between Subject Variability
σ - Residual error
param = (tvvmax = 0.0812189, tvkm = 0.0125445, tvQ = 1.29034, tvvc = 8.93016, tvvp = 31.1174, Ω = Diagonal([0.0,0.0,0.0,0.0,0.0]), σ²_prop = 0.005)
(tvvmax = 0.0812189, tvkm = 0.0125445, tvQ = 1.29034, tvvc = 8.93016, tvvp = 31.1174, Ω = [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)
0.4g/Kg (i.e.,28g for a 70Kg healthy individual), infused over a time span of 30 minutes
, given to a single subject.
ev1 = DosageRegimen(28,time=0, cmt=1, duration=30) sub1 = Subject(id=1,events=ev1)
Subject ID: 1 Events: 2
Lets simulate for plasma concentration with the specific observation time points after Intravenous administration.
Random.seed!(1234) sim_sub = simobs(pk_18,sub1,param,obstimes=0:1:360) df1 = DataFrame(sim_sub) dropmissing!(df1, :cp) delete!(df1, [1])
Use the DataFrame for Plotting where
cp - Predicted concentration
dv - Observed concentration
df1_dv = filter(x -> x.time in [5,10,15,20,25,30,35,40,45,50,55,60,70,75,80,85,90,95,105,110, 115,120,125,130,135,140,145,150,155,160,165,170,175,180,190,195,200,205,210,215,220,225,230, 235,240,255,270,285,300,315,330,345,360], df1) @df df1 plot(:time, :cp, yaxis=:log, label= "Pred - Conc", xlabel="Time (mins)", ylabel="Concentration (g/L)", linewidth=3, color=[:blue], title="Plasma Concentration vs Time", xlims=(-2,400), xticks=[0,50,100,150,200,250,300,350,400], yticks=[0.01,0.1,1,10], ylims=(0.01,10)) @df df1_dv scatter!(:time, :dv, label="Obs - Conc", color=[:red])