Structural model - Two compartment model

Route of administration - IV-infusion (with an infusion pump)

Dosage Regimen - 100 mg/m² of Cisplatin for 1-h at

*time=0*considering a patient with 1.7m²Number of Subjects - 1

By the application of the present model, we will learn how to simulate model for reversible metabolism.

Simulate data for two IV-Infusion with two different rates of infusion regimen and how to develop a better fit for the available data.

In this exercise you will learn how to

Simulate an IV-infusion two compartment for reversible metabolism.

(Here certain assumptions to be considered:-

A fraction of the dose (2.3%) is present as the monohydrated complex in the infusion solution,

That there is a reversible reactions between cisplatin (p) and its monohydrated complex (m),

The input rate can be split into cisplatin infusion rate (Inp) and monohydrate infusion rate (Inm).

Write a differential equation for a

*two-compartment model*in terms of Clearance and Volume for simulating reversible metabolism.

call the "necessary" libraries to get start.

using Pumas using Plots using CSV using StatsPlots using Random

In this two compartment model, we administer the mentioned dose on `Central`

compartment as well as on `Metabolite`

compartment at *'time= 0'*. Also, *K12* and *K21* are the rate constants for the conversion of cisplatin into monohydrated complex and the monohydrated complex into cisplatin, respectively.

pk_34 = @model begin @param begin tvvc ∈ RealDomain(lower=0) tvclm ∈ RealDomain(lower=0) tvvm ∈ RealDomain(lower=0) tvclp ∈ RealDomain(lower=0) tvk12 ∈ RealDomain(lower=0) tvk21 ∈ RealDomain(lower=0) Ω ∈ PDiagDomain(6) σ²_prop ∈ RealDomain(lower=0) end @random begin η ~ MvNormal(Ω) end @pre begin Vc = tvvc * exp(η[1]) CLm = tvclm * exp(η[2]) Vm = tvvm * exp(η[3]) CLp = tvclp * exp(η[4]) K12 = tvk12 * exp(η[5]) K21 = tvk21 * exp(η[6]) end @dynamics begin Central' = -(CLp/Vc)*Central - K12*Central + K21*Metabolite*Vc/Vm Metabolite' = -(CLm/Vm)*Metabolite - K21*Metabolite + K12*Central*Vm/Vc end @derived begin cp = @. Central/Vc dv_cp ~ @. Normal(cp, sqrt(cp^2*σ²_prop)) met = @. Metabolite/Vm dv_met ~ @. Normal(met, sqrt(cp^2*σ²_prop)) end end

PumasModel Parameters: tvvc, tvclm, tvvm, tvclp, tvk12, tvk21, Ω, σ²_prop Random effects: η Covariates: Dynamical variables: Central, Metabolite Derived: cp, dv_cp, met, dv_met Observed: cp, dv_cp, met, dv_met

Parameters provided for simulation are as below. `tv`

represents the typical value for parameters.

Vc - Volume of central compartment (L)

CLm - Clearance of metabolite (L/min)

Vm - Volume of metabolite compartment (μg/L)

CLp - Clearance of parent (L/min)

K12 - Rate constant for the conversion of cisplatin into monohydrated complex (min⁻¹)

K21 - Rate constant for the conversion of monohydrated complex into cisplatin (min⁻¹)

Ω - Between Subject Variability

σ - Residual error

param = ( tvvc = 14.1175, tvclm = 0.00832616, tvvm = 2.96699, tvclp = 0.445716, tvk12 = 0.00021865, tvk21 = 0.021313, Ω = Diagonal([0.0,0.0,0.0,0.0,0.0,0.0]), σ²_prop = 0.001)

(tvvc = 14.1175, tvclm = 0.00832616, tvvm = 2.96699, tvclp = 0.445716, tvk1 2 = 0.00021865, tvk21 = 0.021313, Ω = [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.001)

In this section the Dosage regimen is mentioned for:

Cisplatin Infusion - A total dose of

**170mg**(100mg/m² * 1.7m²) i split as Cisplatin 166.09 and Monohydrate 3.91.Monohydrate Infusion - A total dose of

**10 mg/L**is given as Monohydrate

ev1 = DosageRegimen([166.09,3.91], time=0, cmt=[1,2], duration=[60,60]) sub1 = Subject(id=1, events=ev1, time=20:0.1:180) ev2 = DosageRegimen(10, time=0, cmt=2, duration=2) sub2 = Subject(id=2, events=ev2, time=5:0.1:180) pop2_sub = [sub1, sub2]

Population Subjects: 2 Covariates:

We will simulate the plasma concentration at the pre specified time points.

Random.seed!(123) sim_sub1 = simobs(pk_34, pop2_sub, param) df1 = DataFrame(sim_sub1)

Convert the simulation to a dataframe and use the dataframe to make your necessary plots

df1_id1 = filter(x -> x.id == "1", df1) df1_id1_dv = filter(x -> x.time in [20,30,40,60,65,80,95,120,150,180], df1_id1) df2_id2 = filter(x -> x.id == "2", df1) df2_id2_dv = filter(x -> x.time in [5,10,15,20,30,45,60,120,150,180], df2_id2) @df df1_id1 plot(:time, :cp, title="Reversible Metabolism" , label="Pred - Cisplatin (Inf-Cisplatin)", xlabel="Time (min)", ylabel="Concentration (ug/ml)", linewidth=3, xticks=[0,20,40,60,80,100,120,140,160,180], xlims=(-2,182), yticks=[0,1,2,3,4,5,6], ylims=(-0.1,6)) @df df1_id1 plot!(:time, :met, label="Pred - Monohydrate (Inf-Cisplatin)", linewidth=3) @df df1_id1_dv scatter!(:time, :dv_cp, label="Obs - Conc (Inf-Cisplatin)") @df df1_id1_dv scatter!(:time, :dv_met, label=false) @df df2_id2 plot!(:time, :cp, label="Pred - Cisplatin (Inf-Monohydrate)", linewidth=3) @df df2_id2 plot!(:time, :met, label="Pred - Monohydrate (Inf-Monohydrate)", linewidth=3) @df df2_id2_dv scatter!(:time, :dv_cp, label="Obs - Conc (Inf-Monohydrate)") @df df2_id2_dv scatter!(:time, :dv_met, label=false)