Exercise PK17 - Nonlinear kinetics - Capacity 1

2020-11-12

Background

Following info

  • Structural model - One compartment non linear elimination

  • Route of administration - IV infusion

  • Dosage Regimen - 1800 μg Rapid IV, 5484.8 μg Slow IV

  • Number of Subjects - 1

PK17

Learning Outcomes

In this model, you will learn -

  • To build plasma concentration data following multiple intravenous infusions.

  • To apply differential equation for one compartment model taking into consideration non linear elimination parameters.

  • To simulate the dataset using final parameter estimates.

Objectives

In this tutorial, you will learn how to build one compartment model for capacity limited kinetics and to simulate the model for single subject following multiple IV infusions.

Libraries

Call the "necessary" libraries to get started.

using Pumas
using Plots
using CSV
using StatsPlots
using Random

Model

In this One compartment model following linear elimination,multiple IV infusions are administered into the central compartment.

Linear Model
pk_17_lm     = @model begin
  @param begin
    tvcl      RealDomain(lower=0)
    tvvc      RealDomain(lower=0)
    Ω         PDiagDomain(2)
    σ         RealDomain(lower=0)
  end

  @random begin
    η        ~ MvNormal(Ω)
  end

  @pre begin
    Cl       = tvcl   * exp(η[1])
    Vc       = tvvc   * exp(η[2])
  end

  @dynamics begin
    Central' = - (Cl/Vc)*Central
  end

  @derived begin
    cp       = @. Central/Vc
    dv       ~ @. Normal(cp,σ)
  end
end
PumasModel
  Parameters: tvcl, tvvc, Ω, σ
  Random effects: η
  Covariates: 
  Dynamical variables: Central
  Derived: cp, dv
  Observed: cp, dv
Parameters - Linear Model

The Parameters are as given below. tvrepresents the typical value for parameters.

  • Cl - Clearance (ml/min)

  • Vc - Volume of Distribution of Central Compartment (ml)

  • Ω - Between Subject Variability

  • σ - Residual Error

param_lm = (tvcl   = 43.3,
            tvvc   = 1380 ,
            Ω      = Diagonal([0.0, 0.0, 0.0]),
            σ      =  0.00)
(tvcl = 43.3, tvvc = 1380, Ω = [0.0 0.0 0.0; 0.0 0.0 0.0; 0.0 0.0 0.0], σ =
 0.0)
Michaelis Menten Model

In this One compartment model following nonlinear elimination,multiple IV infusions are administered into the central compartment.

pk_17_mm     = @model begin
  @param begin
    tvvmax    RealDomain(lower=0)
    tvkm      RealDomain(lower=0)
    tvvc      RealDomain(lower=0)
    Ω         PDiagDomain(3)
    σ         RealDomain(lower=0)
  end

  @random begin
    η        ~ MvNormal(Ω)
  end

  @pre begin
    Vmax     = tvvmax * exp(η[1])
    Km       = tvkm   * exp(η[2])
    Vc       = tvvc   * exp(η[3])
  end

  @dynamics begin
    Central' = - (Vmax/(Km+(Central/Vc))) * (Central/Vc)
  end

  @derived begin
    cp       = @. Central/Vc
    dv       ~ @. Normal(cp,sqrt(cp^2*σ))
  end
end
PumasModel
  Parameters: tvvmax, tvkm, tvvc, Ω, σ
  Random effects: η
  Covariates: 
  Dynamical variables: Central
  Derived: cp, dv
  Observed: cp, dv
Parameters - Michaelis Menten Model

The Parameters are as given below. tvrepresents the typical value for parameters.

  • Vmax - Maximum Metabolic Capacity (ug/min)

  • Km - Michaelis-Menten Constant (ug/ml)

  • Vc - Volume of Distribution of Central Compartment (ml)

  • Ω - Between Subject Variability

  • σ - Residual Error

param_mm = (tvvmax = 124.451,
            tvkm   = 0.981806,
            tvvc   = 1350.61 ,
            Ω      = Diagonal([0.0, 0.0, 0.0]),
            σ      =  0.005)
(tvvmax = 124.451, tvkm = 0.981806, tvvc = 1350.61, Ω = [0.0 0.0 0.0; 0.0 0
.0 0.0; 0.0 0.0 0.0], σ = 0.005)

Dosage Regimen

A single subject received Rapid infusion of 1800 μg over 0.5 min followed by 5484.8 μg over 39.63 min.

DR= DosageRegimen([1800,5484.8], time=[0,0.5], cmt=[1,1], duration=[0.5,39.63])
s1= Subject(id=1, events=DR)
Subject
  ID: 1
  Events: 4

Simulation

Lets simulate for plasma concentration for single subject for specific observation time points after mutiple IV infusion dosage.

Random.seed!(1234)
sim_lm = simobs(pk_17_lm, s1, param_lm, obstimes = 0.0:0.01:80.35)
Random.seed!(1234)
sim_mm = simobs(pk_17_mm, s1, param_mm, obstimes = 0.0:0.01:80.35)

DataFrame & Plot

df_lm    = DataFrame(sim_lm)
dropmissing!(df_lm, :cp)
df_mm    = DataFrame(sim_mm)
dropmissing!(df_mm, :cp)
df_dv_mm = filter(x -> x.time in [0.1, 5.38, 10.33, 15.3, 20.35, 23.13, 28.15, 33.18, 38.23, 40.62, 45.25, 50.08, 60.42, 80.35],df_mm)

@df df_lm plot(:time, :cp, linewidth=3, legend=:bottomright,
               label= "Linear Model - Pred", ylabel="Concentration(ug/ml)",
               xlabel="Time(min)", title= ("Time Vs Plasma concentration plot"),
               xticks=[0,10,20,30,40,50,60,70,80,90], xlims=(-2,90),
               yticks=[0,0.5,1.0,1.5,2.0,2.5,3.0], ylims=(0,3.0))
@df df_mm plot!(:time, :cp, label="Michaelis Menten Model - Pred", linewidth=3)
@df df_dv_mm scatter!(:time, :dv, label= "Obs-Cp")