Structural model - One Compartment Model with Linear Elimination
Route of administration - IV-Bolus
Dosage Regimen - 25, 500, 100000 μg adminstered after complete washout
Number of Subjects - 3 species (Mouse, Rat, Human)
To learn about Allometry - Elementary Dedrick Plots
To simulatenously fit an allometric model to concentration-time data obtained from three different species
To apply the allometric constants a,b,c,d
To obtain Cl based on the typical values of a,b and Body Weight
To obtain V based on the typical values of c,d and Body Weight
call the "necessary" libraries to get started
using Pumas using Plots using CSV using StatsPlots using Random
The given data follows a One-Compartment Model with linear eliminiation
pk_28 = @model begin @param begin a ∈ RealDomain(lower=0) b ∈ RealDomain(lower=0) c ∈ RealDomain(lower=0) d ∈ RealDomain(lower=0) Ω ∈ PDiagDomain(2) σ²_prop ∈ RealDomain(lower=0) end @random begin η ~ MvNormal(Ω) end @covariates BW @pre begin Cl = a * (BW)^b * exp(η[1]) Vc = c * (BW)^d * exp(η[2]) end @dynamics begin Central'= -(Cl/Vc)*Central end @derived begin cp = @. Central/Vc dv ~ @. Normal(cp, sqrt(cp^2*σ²_prop)) nca := @nca cp AUC = NCA.auc(nca) CL = NCA.cl(nca) V = NCA.vz(nca) t_half = NCA.thalf(nca) end end
PumasModel Parameters: a, b, c, d, Ω, σ²_prop Random effects: η Covariates: BW Dynamical variables: Central Derived: cp, dv, AUC, CL, V, t_half Observed: cp, dv, AUC, CL, V, t_half
a - typical value of clearance among the species
b - scaling parameter for Cl
c - typical value of volume of distribution among the species
d - scaling parameter for Vc
param = ( a = 0.319142230070251, b = 0.636711976371785, c = 3.07665859278123, d = 1.03093780182922, Ω = Diagonal([0.0,0.0]), σ²_prop = 0.01)
(a = 0.319142230070251, b = 0.636711976371785, c = 3.07665859278123, d = 1. 03093780182922, Ω = [0.0 0.0; 0.0 0.0], σ²_prop = 0.01)
Species 1 (Mouse) - 25μg IV-Bolus and bodyweight (23grams)
Species 2 (Rat) - 500μg IV-Bolus and bodyweight (250grams)
Species 3 (Human) - 100000μg IV-Bolus and bodyweight (70kg)
ev1 = DosageRegimen(25, cmt=1, time=0, route=NCA.IVBolus) sub1 = Subject(id="Mouse", events=ev1, covariates=(BW=0.023,), time=[0,0.167,0.5,2,4,6]) ev2 = DosageRegimen(500, cmt=1, time=0,route=NCA.IVBolus) sub2 = Subject(id="Rat", events=ev2, covariates=(BW=0.250,), time=[0,0.167,0.33,0.5,1,2,4,8,12,15]) ev3 = DosageRegimen(100000, cmt=1, time=0, route=NCA.IVBolus) sub3 = Subject(id="Human", events=ev3, covariates=(BW=70,), time=[0,1,2,4,8,12,24,36,48,72]) pop3_sub = [sub1,sub2,sub3]
Population Subjects: 3 Covariates: BW
Random.seed!(123) sim_pop3 = simobs(pk_28, pop3_sub, param) df1 = DataFrame(sim_pop3)
A plot of Concentration vs Time data from three different species
@df df1 plot(:time, :cp, yaxis=:log, group=:id, linewidth=3, title="Plasma Concentration vs Time", xlabel="Time (hr)", ylabel="Concentration (ug/L)", yticks=[10,100,1000], ylims=(10,1000),xticks=[0,10,20,30,40,50,60,70,80]) @df df1 scatter!(:time, :dv, yaxis=:log, label="Obs - Conc" )
An Elementary-Dedrick Plot of dose and bodyweight normalized plasma concentration vs bodyweight normalized time
transform!(groupby(df1, :id), :amt => first => :amt) dropmissing!(df1, :cp) df1.amt_bw = df1.amt ./ df1.BW df1.yfactor = df1.dv ./ df1.amt_bw df1.bw_b = df1.BW .^(1-0.636) df1.xfactor = df1.time ./ df1.bw_b @df df1 plot(:xfactor, :yfactor, yaxis=:log, group=:id, xlabel="Kallynochrons ( h / (BW^(1-b))", ylabel="Conc / (Dose/BW)", title="Plasma Concentration vs Time", linewidth=3, xticks=[0,2,4,6,8,10,12,14,16,18,20], xlims=(-0.2,20), yticks=[0.01,0.10,1.00], ylims=(0.01,1.00))