using Pumas
using PumasUtilities
using AlgebraOfGraphics
using CairoMakie
using DataFrames
using Random
TMDD Part 1: Understanding Target-Mediated Drug Disposition
1 Introduction
This is the first part of a comprehensive tutorial series on Target-Mediated Drug Disposition (TMDD) modeling in Pumas. In this part, we focus on building intuition for TMDD before diving into complex models.
Tutorial Series Overview:
- Part 1: Understanding TMDD (this tutorial) - Conceptual foundations and parameter meaning 1b. Part 1b: TMDD Dynamics Through the Four Phases - Deep dive into phase characterization
- Part 2: The Full TMDD Model - Complete mechanistic model implementation
- Part 3: TMDD Approximations - QE, QSS, and Michaelis-Menten models
- Part 4: Special Cases and Extensions - Advanced TMDD scenarios
- Part 5: Practical Workflows - Fitting, diagnostics, and model selection
2 Learning Objectives
By the end of this tutorial, you will be able to:
- Explain what TMDD is and why it matters in drug development
- Recognize TMDD signatures in pharmacokinetic data
- Understand the biological basis of ligand-receptor binding kinetics
- Interpret key TMDD parameters (\(K_D\), \(k_{on}\), \(k_{off}\), \(k_{syn}\), \(k_{deg}\), \(k_{int}\))
- Distinguish between linear and nonlinear PK behavior
3 Libraries
4 What is Target-Mediated Drug Disposition?
Target-Mediated Drug Disposition (TMDD) is a pharmacokinetic phenomenon where the binding of a drug (ligand) to its pharmacological target (receptor) significantly influences the drug’s disposition in the body. This concept was formally introduced by Levy (1994).
The key insight is that for drugs with high affinity to their targets, the target itself becomes a meaningful elimination pathway. When target binding is saturable and the target concentration is pharmacologically relevant, the drug exhibits nonlinear pharmacokinetics.
4.1 When Does TMDD Matter?
TMDD is most commonly observed with:
- Monoclonal antibodies (mAbs) binding to soluble or membrane-bound targets
- High-affinity small molecules with potent target engagement
- Therapeutic proteins interacting with cell surface receptors
- Antibody-drug conjugates (ADCs)
A hallmark of TMDD is dose-dependent clearance: at low doses, clearance is high because target-mediated elimination dominates. At high doses (when targets are saturated), clearance decreases to reflect only non-specific elimination pathways.
5 The Biology of Ligand-Receptor Binding
Before we can model TMDD, we need to understand the underlying biology. Consider a drug (the ligand, \(L\)) entering the body and encountering its pharmacological target (the receptor, \(R\)).
5.1 The Binding Process
The ligand-receptor interaction follows reversible binding kinetics:
\[ L + R \underset{k_{off}}{\stackrel{k_{on}}{\rightleftharpoons}} LR \]
Where:
- \(L\) = Free ligand (drug) concentration
- \(R\) = Free receptor (target) concentration
- \(LR\) = Ligand-receptor complex concentration
- \(k_{on}\) = Association rate constant (units: concentration\(^{-1}\) time\(^{-1}\))
- \(k_{off}\) = Dissociation rate constant (units: time\(^{-1}\))
The equilibrium dissociation constant, \(K_D\), characterizes the binding affinity:
\[ K_D = \frac{k_{off}}{k_{on}} \]
A lower \(K_D\) indicates higher binding affinity. Typical values for mAbs are in the nanomolar to picomolar range.
5.2 Receptor Dynamics
In the body, receptors are not static. They are continuously synthesized and degraded:
\[ \emptyset \xrightarrow{k_{syn}} R \xrightarrow{k_{deg}} \emptyset \]
Where:
- \(k_{syn}\) = Zero-order synthesis rate of receptor (units: concentration/time)
- \(k_{deg}\) = First-order degradation rate constant of receptor (units: time\(^{-1}\))
At baseline (before drug administration), the receptor reaches a steady-state concentration:
\[ R_0 = \frac{k_{syn}}{k_{deg}} \]
The baseline receptor concentration \(R_0\) is determined by the ratio of synthesis to degradation rates. This value is crucial for understanding the magnitude of TMDD effects.
5.3 Complex Fate: Internalization
The ligand-receptor complex does not persist indefinitely. It is typically internalized (endocytosed) and degraded at a rate \(k_{int}\):
\[ LR \xrightarrow{k_{int}} \text{degradation products} \]
The relative magnitude of \(k_{int}\) versus \(k_{deg}\) determines whether target engagement accelerates or decelerates elimination:
- If \(k_{int} > k_{deg}\): The complex is cleared faster than free receptor, leading to increased clearance at low doses
- If \(k_{int} < k_{deg}\): The complex is more stable, potentially leading to accumulation
6 Visualizing Linear vs. TMDD Kinetics
Let’s build intuition by comparing linear PK (no target binding) with TMDD kinetics.
6.1 A Simple Linear Model
First, we’ll create a simple one-compartment model with linear elimination:
linear_model = @model begin
@param begin
tvCl ∈ RealDomain(lower = 0)
tvVc ∈ RealDomain(lower = 0)
end
@pre begin
Cl = tvCl
Vc = tvVc
end
@dynamics begin
Central' = -Cl / Vc * Central
end
@derived begin
Concentration = @. Central / Vc
end
endPumasModel
Parameters: tvCl, tvVc
Random effects:
Covariates:
Dynamical system variables: Central
Dynamical system type: Matrix exponential
Derived: Concentration
Observed: Concentration
6.2 A Simple TMDD Model
Now, let’s create a one-compartment TMDD model with target-mediated elimination:
tmdd_simple_model = @model begin
@param begin
tvCl ∈ RealDomain(lower = 0) # Linear clearance
tvVc ∈ RealDomain(lower = 0) # Central volume
tvKsyn ∈ RealDomain(lower = 0) # Receptor synthesis rate
tvKdeg ∈ RealDomain(lower = 0) # Receptor degradation rate
tvKon ∈ RealDomain(lower = 0) # Association rate
tvKoff ∈ RealDomain(lower = 0) # Dissociation rate
tvKint ∈ RealDomain(lower = 0) # Internalization rate
end
@pre begin
Cl = tvCl
Vc = tvVc
Ksyn = tvKsyn
Kdeg = tvKdeg
Kon = tvKon
Koff = tvKoff
Kint = tvKint
end
@dosecontrol begin
bioav = (Ligand = 1 / tvVc,) # Dose enters as concentration
end
@init begin
Receptor = Ksyn / Kdeg # Baseline receptor level (R0)
end
@vars begin
R0 := Ksyn / Kdeg
Ltot := Ligand + Complex
Rtot := Receptor + Complex
end
@dynamics begin
Ligand' = -(Cl / Vc) * Ligand - Kon * Ligand * Receptor + Koff * Complex
Receptor' = Ksyn - Kdeg * Receptor - Kon * Ligand * Receptor + Koff * Complex
Complex' = Kon * Ligand * Receptor - Koff * Complex - Kint * Complex
end
@derived begin
Free_Ligand = @. Ligand
Free_Receptor = @. Receptor
Complex_Conc = @. Complex
end
endPumasModel
Parameters: tvCl, tvVc, tvKsyn, tvKdeg, tvKon, tvKoff, tvKint
Random effects:
Covariates:
Dynamical system variables: Ligand, Receptor, Complex
Dynamical system type: Nonlinear ODE
Derived: Free_Ligand, Free_Receptor, Complex_Conc
Observed: Free_Ligand, Free_Receptor, Complex_Conc
6.3 Comparing the Models
Let’s simulate both models across a range of doses to see how TMDD manifests as nonlinear kinetics:
Show/Hide Code
# Parameters for linear model
param_linear = (tvCl = 0.01, tvVc = 3.0)
# Parameters for TMDD model based on Gibiansky et al.
# These values represent typical mAb parameters
param_tmdd = (
tvCl = 0.006, # Linear clearance: ~0.15 L/day
tvVc = 3.0, # Central volume: 3 L (plasma volume)
tvKsyn = 0.04, # Synthesis rate (nM/hr) → ~1 nmol/day
tvKdeg = 0.008, # Degradation rate (hr⁻¹) → R0 = 5 nM, t½ ~87 hr
tvKon = 0.33, # Association rate (nM⁻¹ hr⁻¹) → ~8 (nM)⁻¹/day
tvKoff = 0.33, # Dissociation rate (hr⁻¹) → KD = 1 nM
tvKint = 0.002, # Internalization rate (hr⁻¹) → ~0.04/day
)
# Create populations with different doses
# Wide dose range to show saturation of target-mediated elimination
doses = [0.5, 5, 50, 500] # nmol (spanning 3 orders of magnitude)
Random.seed!(42)
pop_linear = [
Subject(
id = i,
events = DosageRegimen(dose, time = 0),
observations = (Concentration = nothing,),
) for (i, dose) in enumerate(doses)
]
pop_tmdd = [
Subject(
id = i,
events = DosageRegimen(dose, time = 0, cmt = 1),
observations = (
Free_Ligand = nothing,
Free_Receptor = nothing,
Complex_Conc = nothing,
),
) for (i, dose) in enumerate(doses)
]
# Simulate (extended time for slower mAb kinetics)
obstimes = 0.1:2:672 # Up to 4 weeks
sim_linear = simobs(linear_model, pop_linear, param_linear, obstimes = obstimes)
sim_tmdd = simobs(tmdd_simple_model, pop_tmdd, param_tmdd, obstimes = obstimes)Simulated population (Vector{<:Subject})
Simulated subjects: 4
Simulated variables: Free_Ligand, Free_Receptor, Complex_Conc
Now let’s visualize the difference:
Show/Hide Code
# Convert simulation results to DataFrames
df_linear = DataFrame(sim_linear)
df_tmdd = DataFrame(sim_tmdd)
# Create dose label mapping
dose_labels = DataFrame(id = string.(1:4), Dose = string.(doses) .* " nmol")
# Add dose labels and calculate dose-normalized concentrations
df_linear = innerjoin(df_linear, dose_labels, on = :id)
df_linear.Conc_Norm =
df_linear.Concentration ./ parse.(Float64, replace.(df_linear.Dose, " nmol" => ""))
df_linear.Model .= "Linear PK"
df_tmdd = innerjoin(df_tmdd, dose_labels, on = :id)
df_tmdd.Conc_Norm =
df_tmdd.Free_Ligand ./ parse.(Float64, replace.(df_tmdd.Dose, " nmol" => ""))
df_tmdd.Model .= "TMDD"
# Combine for faceted plot
df_combined = vcat(
select(df_linear, :time, :Dose, :Conc_Norm, :Model),
select(df_tmdd, :time, :Dose, :Conc_Norm, :Model),
)
plt =
data(df_combined) *
mapping(
:time => "Time (hr)",
:Conc_Norm => "Dose-Normalized Concentration";
color = :Dose,
layout = :Model,
) *
visual(Lines; linewidth = 2)
draw(plt; axis = (yscale = Makie.pseudolog10,))In linear PK (left panel), dose-normalized concentrations superimpose regardless of dose level.
In TMDD (right panel), dose-normalized curves diverge: lower doses show faster terminal decline because target-mediated clearance dominates.
7 Recognizing TMDD in Your Data
When analyzing PK data, several signatures suggest TMDD may be present:
7.1 Dose-Dependent Half-Life
The apparent terminal half-life changes with dose:
- At low doses: Short half-life (target-mediated elimination dominates)
- At high doses: Long half-life (linear elimination dominates after target saturation)
Show/Hide Code
plt =
data(df_tmdd) *
mapping(
:time => "Time (hr)",
:Free_Ligand => "Free Ligand Concentration";
color = :Dose => "Dose",
) *
visual(Lines; linewidth = 2)
draw(
plt;
axis = (yscale = Makie.pseudolog10, title = "TMDD: Dose-Dependent Terminal Kinetics"),
)7.2 Non-Parallel Decline
On a semi-log plot, concentration-time curves at different doses are not parallel during the terminal phase. This contrasts with linear kinetics where all doses show parallel decline.
7.3 Rapid Initial Decline Followed by Slower Terminal Phase
TMDD often produces a characteristic multiphasic profile. Peletier & Gabrielsson (2012) identified four distinct phases (A, B, C, D) in TMDD concentration-time curves:
- Phase A: Rapid initial binding (target association)
- Phase B: Linear decline with saturated target
- Phase C: Non-linear transition as target recovers
- Phase D: Terminal linear phase (often internalization-limited)
This four-phase characterization is explored in detail in Part 1b: TMDD Dynamics Through the Four Phases, which provides comprehensive visualizations and parameter identification guidance.
7.4 Disproportionate Increase in AUC with Dose
For a linear drug, AUC increases proportionally with dose. With TMDD, AUC increases more than proportionally at higher doses because target-mediated clearance becomes saturated.
8 Understanding TMDD Parameters
Let’s explore how each parameter affects the PK profile through interactive simulations.
8.1 Effect of Binding Affinity (\(K_D\))
The dissociation constant \(K_D = k_{off}/k_{on}\) determines binding affinity. Lower \(K_D\) means tighter binding.
Show/Hide Code
# Single dose, varying KD
single_pop = [
Subject(
id = 1,
events = DosageRegimen(50, time = 0, cmt = 1),
observations = (
Free_Ligand = nothing,
Free_Receptor = nothing,
Complex_Conc = nothing,
),
),
]
kd_values = [0.1, 1.0, 5.0, 20.0] # nM; Lower = higher affinity
# Build DataFrame with all KD variations
df_kd = DataFrame()
for kd in kd_values
param_kd = (
tvCl = 0.006,
tvVc = 3.0,
tvKsyn = 0.04,
tvKdeg = 0.008,
tvKon = 0.33,
tvKoff = kd * 0.33, # Koff = KD * Kon
tvKint = 0.002,
)
sim_kd = simobs(tmdd_simple_model, single_pop, param_kd, obstimes = obstimes)
sim_df = DataFrame(sim_kd)
sim_df.KD .= "KD = $kd nM"
append!(df_kd, sim_df)
end
plt =
data(df_kd) *
mapping(
:time => "Time (hr)",
:Free_Ligand => "Free Ligand Concentration";
color = :KD => "KD (nM)",
) *
visual(Lines; linewidth = 2)
draw(plt; axis = (yscale = Makie.pseudolog10, title = "Effect of Binding Affinity (KD)"))8.2 Effect of Receptor Concentration (\(R_0\))
The baseline receptor level \(R_0 = k_{syn}/k_{deg}\) determines the magnitude of TMDD. Higher receptor concentrations mean more drug can be eliminated via target binding.
Show/Hide Code
r0_values = [1, 5, 15, 30] # Different R0 levels (nM)
# Build DataFrame with all R0 variations
df_r0 = DataFrame()
for r0 in r0_values
param_r0 = (
tvCl = 0.006,
tvVc = 3.0,
tvKsyn = r0 * 0.008, # Ksyn = R0 * Kdeg
tvKdeg = 0.008,
tvKon = 0.33,
tvKoff = 0.33,
tvKint = 0.002,
)
sim_r0 = simobs(tmdd_simple_model, single_pop, param_r0, obstimes = obstimes)
sim_df = DataFrame(sim_r0)
sim_df.R0 .= "R0 = $r0 nM"
append!(df_r0, sim_df)
end
plt =
data(df_r0) *
mapping(
:time => "Time (hr)",
:Free_Ligand => "Free Ligand Concentration";
color = :R0 => "R0 (nM)",
) *
visual(Lines; linewidth = 2)
draw(
plt;
axis = (yscale = Makie.pseudolog10, title = "Effect of Baseline Receptor Level (R0)"),
)8.3 Effect of Internalization Rate (\(k_{int}\))
The internalization rate determines how quickly the ligand-receptor complex is eliminated.
Show/Hide Code
kint_values = [0.001, 0.002, 0.008, 0.02] # hr⁻¹
# Build DataFrame with all kint variations
df_kint = DataFrame()
for kint in kint_values
param_kint = (
tvCl = 0.006,
tvVc = 3.0,
tvKsyn = 0.04,
tvKdeg = 0.008,
tvKon = 0.33,
tvKoff = 0.33,
tvKint = kint,
)
sim_kint = simobs(tmdd_simple_model, single_pop, param_kint, obstimes = obstimes)
sim_df = DataFrame(sim_kint)
sim_df.kint .= "kint = $kint hr⁻¹"
append!(df_kint, sim_df)
end
plt =
data(df_kint) *
mapping(
:time => "Time (hr)",
:Free_Ligand => "Free Ligand Concentration";
color = :kint => "kint (hr⁻¹)",
) *
visual(Lines; linewidth = 2)
draw(
plt;
axis = (yscale = Makie.pseudolog10, title = "Effect of Internalization Rate (kint)"),
)9 Parameter Summary Table
The following table summarizes the key TMDD parameters and their biological interpretation:
| Parameter | Symbol | Units | Biological Meaning |
|---|---|---|---|
| Association rate | \(k_{on}\) | nM\(^{-1}\)hr\(^{-1}\) | Rate of ligand-receptor binding |
| Dissociation rate | \(k_{off}\) | hr\(^{-1}\) | Rate of complex dissociation |
| Dissociation constant | \(K_D\) | nM | Binding affinity (\(K_D = k_{off}/k_{on}\)) |
| Synthesis rate | \(k_{syn}\) | nM/hr | Rate of receptor production |
| Degradation rate | \(k_{deg}\) | hr\(^{-1}\) | Rate of free receptor turnover |
| Internalization rate | \(k_{int}\) | hr\(^{-1}\) | Rate of complex elimination |
| Baseline receptor | \(R_0\) | nM | Steady-state receptor level (\(R_0 = k_{syn}/k_{deg}\)) |
Based on Gibiansky et al. (2008) and Gibiansky & Gibiansky (2009), along with clinical experience with therapeutic mAbs:
| Parameter | Typical Range | Units | Notes |
|---|---|---|---|
| \(CL\) | 0.1 - 0.5 | L/day | Non-specific linear clearance |
| \(V_c\) | 2 - 5 | L | Approximately plasma volume |
| \(K_D\) | 0.01 - 10 | nM | Very high affinity |
| \(K_{SS}\) | 0.1 - 10 | nM | \(K_{SS} = (k_{off} + k_{int})/k_{on}\) |
| \(k_{on}\) | 0.1 - 10 | nM\(^{-1}\)day\(^{-1}\) | Association rate |
| \(k_{off}\) | 0.01 - 10 | day\(^{-1}\) | Dissociation rate |
| \(R_0\) | 0.1 - 100 | nM | Target-dependent |
| \(k_{deg}\) | 0.1 - 1 | day\(^{-1}\) | Receptor turnover |
| \(k_{int}\) | 0.01 - 1 | day\(^{-1}\) | Often similar to \(k_{deg}\) |
The ratio of \(k_{int}/k_{deg}\) determines whether binding increases or decreases target turnover.
10 When to Suspect TMDD
Consider TMDD modeling when you observe:
- Dose-dependent clearance decreasing with increasing dose
- Non-superimposable dose-normalized profiles
- Rapid initial decline at low doses followed by slower terminal phase
- Greater than dose-proportional AUC increases
- Biological plausibility: high-affinity target with pharmacologically relevant concentrations
Other sources of nonlinear PK include:
- Saturable absorption (flip-flop kinetics)
- Saturable protein binding
- Capacity-limited hepatic metabolism
- Time-dependent autoinduction or inhibition
- Formation of anti-drug antibodies
Careful mechanistic analysis is needed to distinguish these phenomena.
11 Summary
In this tutorial, we covered the conceptual foundations of TMDD:
- TMDD occurs when high-affinity target binding significantly affects drug disposition
- Key components are the ligand, receptor, and complex, each with associated rate constants
- The signature of TMDD is dose-dependent clearance and non-superimposable profiles
- Parameters have biological meaning: \(K_D\) reflects affinity, \(R_0\) reflects target abundance, \(k_{int}\) reflects complex elimination
In Part 2, we will implement the full mechanistic TMDD model and explore its mathematical structure in detail.