Exercise 33 - Transdermal input and kinetics

2020-11-12

Background

  • Structural model - One compartment linear elimination with zero-order input

  • Route of administration - Transdermal

  • Dosage Regimen - 15,890 μg per patch. The patch was applied for 16 hours for 5 consecutive days

  • Number of Subjects - 1

Graphical representation of the model

Learning Outcome

To understand the kinetics of a given drug using Transdermal input following 2 different input rates

Objectives

To build one compartment model with zero-order input and to understand its function using transdermal delivery system.

Libraries

Call the "necessary" libraries to get started.

using Pumas
using Plots
using CSV
using StatsPlots
using Random

Model

To build one compartment model with zero-order input following transdermal drug administration

pk_33         = @model begin
  @param begin
    tvcl       RealDomain(lower=0)
    tvvc       RealDomain(lower=0)
    tvdslow    RealDomain(lower=0)
    tvtfast    RealDomain(lower=0)
    tvtslow    RealDomain(lower=0)
    Ω          PDiagDomain(5)
    σ_prop     RealDomain(lower=0)
  end

  @random begin
    η         ~ MvNormal(Ω)
  end

  @pre begin
    Cl        = tvcl * exp(η[1])
    Vc        = tvvc * exp(η[2])
    Dose_slow = (tvdslow/15890) * exp(η[3])
    Tfast     = tvtfast * exp(η[4])
    Tslow     = tvtslow * exp(η[5])
    duration  = (Central=Tfast, Dslow=Tslow)
    bioav     = (Central=1-Dose_slow, Dslow=Dose_slow)
  end

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

  @derived begin
    cp        = @. Central/Vc
    dv        ~ @. Normal(cp, sqrt(cp^2*σ_prop))
  end
end
PumasModel
  Parameters: tvcl, tvvc, tvdslow, tvtfast, tvtslow, Ω, σ_prop
  Random effects: η
  Covariates: 
  Dynamical variables: Dslow, Central
  Derived: cp, dv
  Observed: cp, dv

Parameters

Parameters provided for simulation are as below. tv represents the typical value for parameters.

  • CL - Clearance (L/hr),

  • Vc - Volume of Central Compartment (L)

  • Dslow - Dose of slow infusion (μg)

  • Tfast - Duration of fast release (hr)

  • Tslow - Duration of slow release (hr)

  • Ω - Between Subject Variability

  • σ - Residual error

param = ( tvcl    = 79.8725,
          tvvc    = 239.94,
          tvdslow = 11184.3,
          tvtfast = 7.54449,
          tvtslow = 19.3211,
          Ω       = Diagonal([0.0,0.0,0.0,0.0,0.0]),
          σ_prop  = 0.005)
(tvcl = 79.8725, tvvc = 239.94, tvdslow = 11184.3, tvtfast = 7.54449, tvtsl
ow = 19.3211, Ω = [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)

DosageRegimen

  • 15,890 μg per patch.

  • The patch is applied for 16 hours, for 5 consecutive days

  • The patch releases the drug at two different rate processes, fast and slow simultaneously over a period of 6 and 18 hours respectively.

ev1  = DosageRegimen([15890,15890], time=0, cmt = [1,2], rate=[-2,-2])
sub1 = Subject(id=1, events=ev1)
Subject
  ID: 1
  Events: 4

Simulation

Simulate the plasma concentration

Random.seed!(123)
sim_sub1 = simobs(pk_33, sub1, param, obstimes=0:0.1:24)
df1      = DataFrame(sim_sub1)

DataFrame & Plot

Create a dataframe of the simulated data and to plot it.

df1_dv = filter(x -> x.time in [0,0.5,1,2,3,4,6,8,10,12,14,16,17,18,21,23.37], df1)

@df df1 plot(:time, :cp,
              title="Plasma Concentration vs Time", label= "Pred - Conc",
              xlabel= "Time (Hr)", ylabel="Concentration (ug/L)", linewidth=3,
              xlims=(0,25), xticks=[0,5,10,15,20,25], yticks=[2,4,6,8,10,12,14,16], ylims=(2,16))
@df df1_dv scatter!(:time, :dv, label="Obs - Conc")