DDI assessment
ddi-assessment.RmdThis vignette shows how to assess the potential of a drug to act as a perpetrator of drug-drug interactions with CYP and UGT enzymes and drug transporters. The live code contained in this document relies on the following R packages:
Regulatory background
In May-2024, ICH published a new harmonized guidance on the assessment of enzyme- or transporter-mediated drug interactions that will be adopted by the ICH-abiding regulatory agencies, including FDA, EMA and PMDA.
Currently (Nov-2024), the following guidance documents are provided by the individual regulatory authorities:
Drug properties
As a general concept, the risk for enzyme or transporter interactions is evaluated for a given drug exposure level that corresponds to the maximal unbound clinical exposure in the relevant pharmacokinetic compartment. For interactions with hepatic enzymes, the unbound maximal plasma concentration at steady state (\(I_{max,ss,u}\)) is considered, and for intestinal enzymes as victim of orally administered drugs, the maximal clinical dose, dissolved in a volume of 250 mg (\(I_{gut}\)).
For interactions with basolateral hepatic transporters (OATP1B1, OATP1B3), the unbound hepatic inlet concentration (\(I_{max,inlet,u}\)) is considered that is composed of the \(I_{max,ss,u}\) and a portal venous term reflecting the intestinally absorbed drug escaping gut metabolism.
These concentrations can be automatically derived from the following set of drug-specific parameters:
| Parameter | Parameter name | Default | Unit | 
|---|---|---|---|
| Molar weight | mw | NA | g/mol | 
| Clinical dose | dose | NA | mg | 
| Maximal total plasma concentration (\(C_max\)) | imaxss | NA | ng/ml | 
| Fraction unbound (\(f_u\)) | fu | 1 | |
| Microsomal unbound fraction (\(f_{u,mic}\)) | fumic | 1 | |
| Blood-to-plasma concentration ratio (\(R_b\)) | rb | 1 | |
| Fraction absorbed (\(f_a\)) | fa | 1 | |
| Fraction escapting gut metabolism (\(f_g\)) | fg | 1 | |
| Absorption rate constant (\(k_a\)) | ka | 0.1 | 1/min | 
| Solubility | solubility | Inf | mg/l | 
The specification of the key compound parameters is therefore the first step in the formal analysis. In the scope of this package, these key parameters are aggregated into a ‘perpetrator’ object. The package contains a sample perpetrator object for the ficitional drug ‘examplinib’:
examplinib_parent
#> ----- DDI perpetrator object -----
#> name         examplinib                   
#> oral         TRUE                         
#> mw           492.6                        
#> dose         450          clinical dose   
#> imaxss       3530         study 001       
#> fu           0.023        study 002       
#> fumic        1            default         
#> rb           1            study 003       
#> fa           0.81         study 003       
#> fg           1            default         
#> ka           0.00267      unknown         
#> solubility   Inf          defaultThe ddir package provides multiple options to create
perpetrator objects. In the simplest case, the function
make_perpetrator() can be used:
perp <- make_perpetrator(
  name = "test",
  dose = 100,
  imaxss = 1000,
  mw = 500,
  oral = TRUE,
  fu = 1,
  fumic = 1,
  rb = 1,
  fa = 1,
  fg = 1,
  ka = 0.1,
  solubility = Inf
)Other options are presented in a dedicated vignette (see
vignette("load-data")).
To facilitate the generation of R notebook-based reports,
property_table() can be used to print a markdown-formatted
table of the key compound parameters:
property_table(examplinib_parent)| parameter | value | source | 
|---|---|---|
| oral | TRUE | |
| \(MW\) (g/mol) | 492.6 | |
| \(dose\) (mg) | 450 | clinical dose | 
| \(C_{max,ss}\) (ng/ml) | 3530 | study 001 | 
| \(f_u\) | 0.023 | study 002 | 
| \(f_{u,mic}\) | 1 | default | 
| \(R_B\) | 1 | study 003 | 
| \(F_a\) | 0.81 | study 003 | 
| \(F_g\) | 1 | default | 
| \(k_a\) (1/min) | 0.00267 | unknown | 
| \(solubility\) (mg/l) | Inf | default | 
Perpetrator concentrations
The relevant perpetrator concentrations (in \(\mu M\)) for a perpetrator compound can be
determined using key_concentrations() - please see the
documentation to this function for details about the calculations. While
this function returns a named numeric vector of the naked
concentrations, a markdown-formatted tabular output that can be directly
embedded in R notebook documents can be generated using
`conc_table()’:
key_concentrations(examplinib_parent)
#>         igut      imaxssu   imaxinletu   imaxintest 
#> 3654.0803898    0.1648193    0.1929384    6.5855664
conc_table(examplinib_parent)| parameter | value (\(ng/ml\)) | value (\(\mu M\)) | 
|---|---|---|
| \(I_{gut}\) | 1800000.0 | 3654.080 | 
| \(I_{max,ss,u}\) | 81.2 | 0.165 | 
| \(I_{max,inlet,u}\) | 95.0 | 0.193 | 
| \(I_{max,intestinal}\) | 3244.1 | 6.586 | 
Direct enzyme inhibition
CYP enzymes
basic_cyp_inhibition_risk(examplinib_parent, examplinib_cyp_inhibition_data)
#>       cyp    ki   kiu      r risk_hep    r_gut risk_intest
#> 1  CYP1A2    NA    NA     NA       NA       NA          NA
#> 2  CYP2B6    NA    NA     NA       NA       NA          NA
#> 3  CYP2C8 11.00 11.00 0.0150    FALSE       NA          NA
#> 4  CYP2C9  0.60  0.60 0.2747     TRUE       NA          NA
#> 5 CYP2C19  0.25  0.25 0.6593     TRUE       NA          NA
#> 6  CYP2D6    NA    NA     NA       NA       NA          NA
#> 7  CYP3A4 12.50 12.50 0.0132    FALSE 292.3264        TRUE
basic_cyp_inhibition_risk_table(examplinib_parent, examplinib_cyp_inhibition_data)| CYP | \(K_{i}\) (\(\mu M\)) | \(K_{i,u}\) (\(\mu M\)) | \(R\) | risk (hepatic) | \(R_{gut}\) | risk (intestinal) | 
|---|---|---|---|---|---|---|
| CYP1A2 | NA | NA | NA | |||
| CYP2B6 | NA | NA | NA | |||
| CYP2C8 | 11.00 | 11.00 | 0.015 | No | ||
| CYP2C9 | 0.60 | 0.60 | 0.275 | Yes | ||
| CYP2C19 | 0.25 | 0.25 | 0.659 | Yes | ||
| CYP2D6 | NA | NA | NA | |||
| CYP3A4 | 12.50 | 12.50 | 0.013 | No | 292.3 | Yes | 
UGT enzymes
basic_ugt_inhibition_risk(examplinib_parent, examplinib_ugt_inhibition_data)
#>       ugt  kiu          r risk
#> 1  UGT1A1 7.50 0.02197591 TRUE
#> 2  UGT1A3 7.50 0.02197591 TRUE
#> 3  UGT1A4 7.50 0.02197591 TRUE
#> 4  UGT1A6 7.50 0.02197591 TRUE
#> 5  UGT1A9 1.90 0.08674701 TRUE
#> 6  UGT2B7 7.50 0.02197591 TRUE
#> 7 UGT2B15 7.50 0.02197591 TRUE
#> 8 UGT2B17 3.05 0.05403912 TRUE
basic_ugt_inhibition_risk_table(examplinib_parent, examplinib_ugt_inhibition_data)| UGT | \(K_{i,u}\) | \(R\) | risk | 
|---|---|---|---|
| UGT1A1 | 7.50 | 0.022 | Yes | 
| UGT1A3 | 7.50 | 0.022 | Yes | 
| UGT1A4 | 7.50 | 0.022 | Yes | 
| UGT1A6 | 7.50 | 0.022 | Yes | 
| UGT1A9 | 1.90 | 0.087 | Yes | 
| UGT2B7 | 7.50 | 0.022 | Yes | 
| UGT2B15 | 7.50 | 0.022 | Yes | 
| UGT2B17 | 3.05 | 0.054 | Yes | 
Time-dependent enzyme inhibition
basic_cyp_tdi_risk(examplinib_parent, examplinib_cyp_tdi_data)
#>      cyp   ki    fu kinact   kdeg    source        r risk
#> 1 CYP3A4 0.17 0.023   0.04 0.0193 study 001 2.718115 TRUE
basic_cyp_tdi_risk_table(examplinib_parent, examplinib_cyp_tdi_data)| CYP | \(K_{I}\) (\(\mu M\)) | \(f_u\) | \(k_{inact}\) (1/h) | \(k_{deg}\) (1/h) | source | \(R\) | risk | 
|---|---|---|---|---|---|---|---|
| CYP3A4 | 0.17 | 0.02 | 0.04 | 0.02 | study 001 | 2.72 | Yes | 
CYP induction
Fold-change method
static_cyp_induction_risk(examplinib_parent, examplinib_cyp_induction_data)
#>       cyp emax maxc    source maxc_imaxssu  risk
#> 1  CYP1A2 1.00    5 study 007         30.3 FALSE
#> 2  CYP2B6 1.00    5 study 007         30.3 FALSE
#> 3  CYP2C8   NA   NA                     NA    NA
#> 4  CYP2C9   NA   NA                     NA    NA
#> 5 CYP2C19   NA   NA                     NA    NA
#> 6  CYP2D6   NA   NA                     NA    NA
#> 7  CYP3A4 7.35    3 study 007         18.2  TRUE
#>                                                                 note
#> 1 caution: maximal tested concentration is less than 50-fold Cmax,u!
#> 2 caution: maximal tested concentration is less than 50-fold Cmax,u!
#> 3                                                                   
#> 4                                                                   
#> 5                                                                   
#> 6                                                                   
#> 7 caution: maximal tested concentration is less than 50-fold Cmax,u!
static_cyp_induction_risk_table(examplinib_parent, examplinib_cyp_induction_data)| CYP | \(E_{max}\) | \(max c\) (\(\mu M\)) | source | \(max c/C_{max,ss,u}\) | risk | notes | 
|---|---|---|---|---|---|---|
| CYP1A2 | 1.00 | 5 | study 007 | 30.3 | No | Risk cannot be fully excluded | 
| CYP2B6 | 1.00 | 5 | study 007 | 30.3 | No | Risk cannot be fully excluded | 
| CYP2C8 | NA | NA | NA | |||
| CYP2C9 | NA | NA | NA | |||
| CYP2C19 | NA | NA | NA | |||
| CYP2D6 | NA | NA | NA | |||
| CYP3A4 | 7.35 | 3 | study 007 | 18.2 | Yes | 
Basic kinetic model
kinetic_cyp_induction_risk(examplinib_parent, examplinib_cyp_induction_data)
#>       cyp emax ec50 maxc    source         r risk
#> 1  CYP1A2 1.00   NA    5 study 007        NA   NA
#> 2  CYP2B6 1.00   NA    5 study 007        NA   NA
#> 3  CYP2C8   NA   NA   NA                  NA   NA
#> 4  CYP2C9   NA   NA   NA                  NA   NA
#> 5 CYP2C19   NA   NA   NA                  NA   NA
#> 6  CYP2D6   NA   NA   NA                  NA   NA
#> 7  CYP3A4 7.35 1.64    3 study 007 0.2134856 TRUE
kinetic_cyp_induction_risk_table(examplinib_parent, examplinib_cyp_induction_data)| CYP | \(E_{max}\) | \(EC_{50}\) (\(\mu M\)) | source | \(R\) | risk | 
|---|---|---|---|---|---|
| CYP1A2 | 1.00 | NA | study 007 | NA | |
| CYP2B6 | 1.00 | NA | study 007 | NA | |
| CYP2C8 | NA | NA | NA | ||
| CYP2C9 | NA | NA | NA | ||
| CYP2C19 | NA | NA | NA | ||
| CYP2D6 | NA | NA | NA | ||
| CYP3A4 | 7.35 | 1.64 | study 007 | 0.21 | Yes | 
Mechanistic-static assessment of CYP-related DDI
mech_stat_cyp_risk(examplinib_parent, examplinib_cyp_inhibition_data,
                   examplinib_cyp_induction_data)
#>       cyp   substrate   kiu fgut   fm fmcyp         Ag        Ah Bg Bh       Cg
#> 1  CYP1A2  tizanidine    NA 1.00 0.95  0.98 1.00000000 1.0000000  1  1 1.000000
#> 2  CYP2B6        <NA>    NA   NA   NA    NA 1.00000000 1.0000000  1  1 1.000000
#> 3  CYP2C8 repaglinide 11.00 1.00 1.00  0.61 0.62551298 0.9827625  1  1 1.000000
#> 4  CYP2C9  S-warfarin  0.60 1.00 1.00  0.91 0.08350072 0.7566792  1  1 1.000000
#> 5 CYP2C19  omeprazole  0.25 1.00 1.00  0.87 0.03657341 0.5644126  1  1 1.000000
#> 6  CYP2D6 desipramine    NA 1.00 1.00  0.85 1.00000000 1.0000000  1  1 1.000000
#> 7  CYP3A4   midazolam 12.50 0.57 0.96  1.00 0.65494520 0.9847995  1  1 6.884569
#>         Ch      aucr  risk
#> 1 1.000000 1.0000000 FALSE
#> 2 1.000000        NA    NA
#> 3 1.000000 1.0106266 FALSE
#> 4 1.000000 1.2843927  TRUE
#> 5 1.000000 1.6102050  TRUE
#> 6 1.000000 1.0000000 FALSE
#> 7 1.773674 0.2321612  TRUE
mech_stat_cyp_risk_table(examplinib_parent, examplinib_cyp_inhibition_data,
                         examplinib_cyp_induction_data)| CYP | substrate | \(F_{gut}\) | \(f_m\) | \(f_{m,CYP}\) | \(A_g\) | \(A_h\) | \(B_g\) | \(B_h\) | \(C_g\) | \(C_h\) | AUCR | risk | 
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| CYP1A2 | tizanidine | 1.00 | 0.95 | 0.98 | 1.00 | 1.00 | 1 | 1 | 1.00 | 1.00 | 1.000 | No | 
| CYP2B6 | NA | NA | NA | NA | 1.00 | 1.00 | 1 | 1 | 1.00 | 1.00 | NA | |
| CYP2C8 | repaglinide | 1.00 | 1.00 | 0.61 | 0.63 | 0.98 | 1 | 1 | 1.00 | 1.00 | 1.011 | No | 
| CYP2C9 | S-warfarin | 1.00 | 1.00 | 0.91 | 0.08 | 0.76 | 1 | 1 | 1.00 | 1.00 | 1.284 | Yes | 
| CYP2C19 | omeprazole | 1.00 | 1.00 | 0.87 | 0.04 | 0.56 | 1 | 1 | 1.00 | 1.00 | 1.610 | Yes | 
| CYP2D6 | desipramine | 1.00 | 1.00 | 0.85 | 1.00 | 1.00 | 1 | 1 | 1.00 | 1.00 | 1.000 | No | 
| CYP3A4 | midazolam | 0.57 | 0.96 | 1.00 | 0.65 | 0.98 | 1 | 1 | 6.88 | 1.77 | 0.232 | Yes | 
Transporter inhibition
transporter_inhibition_risk(examplinib_parent, examplinib_transporter_inhibition_data)
#>    transporter   ic50    source          i            r threshold  risk
#> 1      Pgp_int   0.41 study 005       igut 8.912391e+03     10.00  TRUE
#> 2      Pgp_sys   0.41 study 005    imaxssu 4.019984e-01      0.02  TRUE
#> 3     BCRP_int   1.90 study 005       igut 1.923200e+03     10.00  TRUE
#> 4     BCRP_sys   1.90 study 005    imaxssu 8.674701e-02      0.02  TRUE
#> 5      OATP1B1 177.00 study 006 imaxinletu 1.090047e-03      0.10 FALSE
#> 6      OATP1B3  35.00 study 006 imaxinletu 5.512525e-03      0.10 FALSE
#> 7         OAT1 271.00              imaxssu 6.081894e-04      0.10 FALSE
#> 8         OAT3 300.00              imaxssu 5.493978e-04      0.10 FALSE
#> 9         BSEP  12.80              imaxssu 1.287651e-02      0.10 FALSE
#> 10        OCT1   2.30 study 006       <NA>           NA        NA    NA
#> 11        OCT2  67.00 study 006    imaxssu 2.459990e-03      0.10 FALSE
#> 12       MATE1   3.60 study 006    imaxssu 4.578315e-02      0.02  TRUE
#> 13      MATE2k   1.10 study 006    imaxssu 1.498358e-01      0.02  TRUE
transporter_inhibition_risk_table(examplinib_parent, examplinib_transporter_inhibition_data)| transporter | \(IC_{50}\) | source | \(R\) | threshold | risk | 
|---|---|---|---|---|---|
| Pgp_int | 0.41 | study 005 | 8912.391 | 10.00 | Yes | 
| Pgp_sys | 0.41 | study 005 | 0.402 | 0.02 | Yes | 
| BCRP_int | 1.90 | study 005 | 1923.200 | 10.00 | Yes | 
| BCRP_sys | 1.90 | study 005 | 0.087 | 0.02 | Yes | 
| OATP1B1 | 177.00 | study 006 | 0.001 | 0.10 | No | 
| OATP1B3 | 35.00 | study 006 | 0.006 | 0.10 | No | 
| OAT1 | 271.00 | 0.001 | 0.10 | No | |
| OAT3 | 300.00 | 0.001 | 0.10 | No | |
| BSEP | 12.80 | 0.013 | 0.10 | No | |
| OCT1 | 2.30 | study 006 | NA | NA | |
| OCT2 | 67.00 | study 006 | 0.002 | 0.10 | No | 
| MATE1 | 3.60 | study 006 | 0.046 | 0.02 | Yes | 
| MATE2k | 1.10 | study 006 | 0.150 | 0.02 | Yes |