Exercise PK28 - Allometry - Elementary Dedrick Plot

2020-11-12

Background

  • 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)

pk28

Learning Outcome

  • To learn about Allometry - Elementary Dedrick Plots

  • To simulatenously fit an allometric model to concentration-time data obtained from three different species

Objectives

  • 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

Libraries

call the "necessary" libraries to get started

using Pumas
using Plots
using CSV
using StatsPlots
using Random

Model

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

Parameters

  • 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)

Dosage Regimen

  • 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

Simulation

Random.seed!(123)
sim_pop3 = simobs(pk_28, pop3_sub, param)
df1      = DataFrame(sim_pop3)

Dataframe and Plotting

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))