Exercise PK19 - Capacity III - Metabolite Kinetics

2021-09-05

Background

  • Structural model - Two Compartment model with a Metabolite Compartment

  • Route of administration - IV Bolus

  • Dosage Regimen - 10μmol/kg, 50μmol/kg, 300μmol/kg

  • Number of Subjects - 3

PK19 Graphic Model

Learning Outcome

In this model, 3 different dose of the drug given as an IV Bolus to 3 different subjects, will help you estimate metabolite formation rate and elimination rate.

Objectives

In this tutorial, you will learn how to build two compartment model, a drug undergoing capacity limited metabolite kinetics.

Libraries

Call the "necessary" libraries to get start.

using Random
using Pumas
using PumasUtilities
using CairoMakie

Model

In this two compartment model, we administer 3 different doses in 3 different subjects of a drug that undergoes metabolite kinetics.

pk_19           = @model begin
  @metadata begin
    desc = "Non-linear formation of Metabolite Model"
    timeu = u"hr"
  end

  @param begin
    "Volume of Central Compartment (L/kg)"
    tvvc         RealDomain(lower=0)
    "Volume of Perpheral Compartment (L/kg)"
    tvvp         RealDomain(lower=0)
    "Inter-Compartmental Clearance (L/min)"
    tvq          RealDomain(lower=0)
    "Maximum Velocity of Reaction (μmol/min/kg)"
    tvvmax       RealDomain(lower=0)
    "Michaelis-Menten constant (μmol/L)"
    tvkm         RealDomain(lower=0)
    "Rate of Elimination of Metabolite (min⁻¹)"
    tvkme        RealDomain(lower=0)
    "Volume of Metabolite Compartment (L/kg)"
    tvvme        RealDomain(lower=0)
    Ω            PDiagDomain(7)
    "Proportional RUV - Plasma"
    σ_prop_cp   RealDomain(lower=0)
    "Proportional RUV - Metabolite"
    σ_prop_met  RealDomain(lower=0)
  end

  @random begin
    η           ~ MvNormal(Ω)
  end

  @pre begin
    Vc          = tvvc * exp(η[1])
    Vp          = tvvp * exp(η[2])
    Q           = tvq * exp(η[3])
    Vmax        = tvvmax * exp(η[4])
    Km          = tvkm * exp(η[5])
    Kme         = tvkme * exp(η[6])
    Vme         = tvvme * exp(η[7])
  end

  @vars begin
    VMKM       := Vmax/(Km+(Central/Vc))
  end

  @dynamics begin
    Central'    = -VMKM*(Central/Vc) - (Q/Vc)*Central + (Q/Vp)*Peripheral
    Peripheral' = (Q/Vc)*Central - (Q/Vp)*Peripheral
    Metabolite' = VMKM*(Central/Vc) - Kme*Metabolite
  end

  @derived begin
    cp          = @. Central/Vc
    """
    Observed Plasma Concentration (μmol/L)
    """
    dv_cp       ~ @. Normal(cp, cp*σ_prop_cp)
    met         = @. Metabolite/Vme
    """
    Observed Metabolite Concentration (μmol/L)
    """
    dv_met      ~ @. Normal(met, met*σ_prop_met)
  end
end
PumasModel
  Parameters: tvvc, tvvp, tvq, tvvmax, tvkm, tvkme, tvvme, Ω, σ_prop_cp, σ_
prop_met
  Random effects: η
  Covariates: 
  Dynamical variables: Central, Peripheral, Metabolite
  Derived: cp, dv_cp, met, dv_met
  Observed: cp, dv_cp, met, dv_met

Parameters

The parameters are as given below. tv represents the typical value for parameters.

  • $Vc$ - Volume of Central Compartment (L/kg)

  • $Vp$ - Volume of Peripheral Compartment (L/kg)

  • $Q$ - Inter-Compartmental Clearance (L/min)

  • $Vmax$ - Maximum Velocity of Reaction (μmol/min/kg)

  • $Km$ - Michaelis-Menten constant (μmol/L)

  • $Kme$ - Rate of Elimination of Metabolite (min⁻¹)

  • $Vme$ - Volume of Metabolite Compartment (L/kg)

  • $Ω$ - Between Subject Variability

  • $σ$ - Residual error

param = ( tvvc        = 1.06405,
          tvvp        = 2.00748,
          tvq         = 0.128792,
          tvvmax      = 1.64429,
          tvkm        = 54.794,
          tvkme       = 0.145159,
          tvvme       = 0.290811,
          Ω           = Diagonal([0.0,0.0,0.0,0.0,0.0,0.0,0.0]),
          σ_prop_cp  = 0.12,
          σ_prop_met = 0.12)
(tvvc = 1.06405, tvvp = 2.00748, tvq = 0.128792, tvvmax = 1.64429, tvkm = 5
4.794, tvkme = 0.145159, tvvme = 0.290811, Ω = [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_cp = 0.12, σ_p
rop_met = 0.12)

Dosage Regimen

Three Subjects were adminitered with three different doses of 10μmol/kg, 50μmol/kg and 300μmol/kg.

dose  = [10, 50, 300]
ids   = ["ID:1 Dose 10", "ID:2 Dose 50", "ID:3 Dose 300"]
ev(x) = DosageRegimen(dose[x], cmt = 1, time = 0)

pop = map(zip(1:3, ids)) do (i, id)
  return Subject(id = id, events = ev(i), observations = (cp = nothing, met = nothing))
end
Population
  Subjects: 3
  Observations: cp, met

Simulation

We will simulate the parent plasma concentration and metabolite plasma concentration.

Random.seed!(123)
sim_pop3_sub = simobs(pk_19, pop, param, obstimes = 0.1:1:300)

Visualization

fig = Figure()
ax, p1 = sim_plot(fig[1,1], pk_19, 
        sim_pop3_sub, 
        observations = :cp, 
        color = :redsblues,
        linewidth = 4,
        axis = (xlabel = "Time (minute)", 
                ylabel = "PK19 Parent Concentrations (μmol/L)",
                xticks = 0:50:300, yscale = log10))
            
axislegend(ax) 
fig
fig = Figure()
ax, p1 = sim_plot(fig[1,1], pk_19, 
        sim_pop3_sub, 
        observations = :met, 
        color = :redsblues,
        linewidth = 4,
        axis = (xlabel = "Time (minute)", 
                ylabel = "PK19 Metabolite Concentrations (μmol/L)",
                xticks = 0:50:300, yscale = log10))
            
axislegend(ax) 
fig