rm(list = ls())
###############################input data 
#BiocManager::install("synergyfinder")
library(synergyfinder)
## Warning: package 'synergyfinder' was built under R version 4.4.1
data("mathews_screening_data")
head(mathews_screening_data)
##   block_id  drug_row  drug_col conc_r  conc_c  response conc_r_unit conc_c_unit
## 1        1 ispinesib ibrutinib   2500 50.0000  7.802637          nM          nM
## 2        1 ispinesib ibrutinib   2500 12.5000  6.831317          nM          nM
## 3        1 ispinesib ibrutinib   2500  3.1250 15.089589          nM          nM
## 4        1 ispinesib ibrutinib   2500  0.7812 24.503885          nM          nM
## 5        1 ispinesib ibrutinib   2500  0.1954 38.043076          nM          nM
## 6        1 ispinesib ibrutinib   2500  0.0000 45.790634          nM          nM
# Reshaping and pre-processing
#BiocManager::available()
data_1 <- mathews_screening_data
dim(data_1) #[1] 72  8
## [1] 72  8
unique(data_1$block_id) #1 2
## [1] 1 2
#View(data_1)
unique(data_1[, c(1, 2, 3)])
##    block_id   drug_row  drug_col
## 1         1  ispinesib ibrutinib
## 37        2 canertinib ibrutinib
res <- ReshapeData(
  data = mathews_screening_data,
  data_type = "viability",
  impute = TRUE,
  impute_method = NULL,
  noise = TRUE,
  seed = 1)
class(res) #[1] "list"
## [1] "list"
res
## $drug_pairs
## # A tibble: 2 × 7
##   block_id drug1      drug2     conc_unit1 conc_unit2 input_type replicate
##      <int> <chr>      <chr>     <chr>      <chr>      <chr>      <lgl>    
## 1        1 ispinesib  ibrutinib nM         nM         viability  FALSE    
## 2        2 canertinib ibrutinib nM         nM         viability  FALSE    
## 
## $response
## # A tibble: 72 × 5
##    block_id conc1  conc2 response response_origin
##       <int> <dbl>  <dbl>    <dbl>           <dbl>
##  1        1  2500 50         92.2            92.2
##  2        1  2500 12.5       93.2            93.2
##  3        1  2500  3.12      84.9            84.9
##  4        1  2500  0.781     75.5            75.5
##  5        1  2500  0.195     62.0            62.0
##  6        1  2500  0         54.2            54.2
##  7        1   625 50         94.1            94.1
##  8        1   625 12.5       93.4            93.4
##  9        1   625  3.12      85.9            85.9
## 10        1   625  0.781     76.7            76.7
## # ℹ 62 more rows
#4 Synergy and sensitivity analysis
res_1 <- CalculateSynergy(
  data = res,
  method = c("ZIP", "HSA", "Bliss", "Loewe"),
  Emin = NA,
  Emax = NA,
  correct_baseline = "non")
## Calculating synergy score(s) for block 1...
## Calculating synergy score(s) for block 2...
res_1
## $drug_pairs
## # A tibble: 2 × 15
##   block_id drug1      drug2     conc_unit1 conc_unit2 input_type replicate
##      <int> <chr>      <chr>     <chr>      <chr>      <chr>      <lgl>    
## 1        1 ispinesib  ibrutinib nM         nM         viability  FALSE    
## 2        2 canertinib ibrutinib nM         nM         viability  FALSE    
## # ℹ 8 more variables: ZIP_synergy_p_value <chr>, HSA_synergy_p_value <chr>,
## #   Bliss_synergy_p_value <chr>, Loewe_synergy_p_value <chr>,
## #   ZIP_synergy <dbl>, HSA_synergy <dbl>, Bliss_synergy <dbl>,
## #   Loewe_synergy <dbl>
## 
## $response
## # A tibble: 72 × 5
##    block_id conc1  conc2 response response_origin
##       <int> <dbl>  <dbl>    <dbl>           <dbl>
##  1        1  2500 50         92.2            92.2
##  2        1  2500 12.5       93.2            93.2
##  3        1  2500  3.12      84.9            84.9
##  4        1  2500  0.781     75.5            75.5
##  5        1  2500  0.195     62.0            62.0
##  6        1  2500  0         54.2            54.2
##  7        1   625 50         94.1            94.1
##  8        1   625 12.5       93.4            93.4
##  9        1   625  3.12      85.9            85.9
## 10        1   625  0.781     76.7            76.7
## # ℹ 62 more rows
## 
## $synergy_scores
## # A tibble: 72 × 13
##    block_id conc1  conc2 ZIP_fit ZIP_ref ZIP_synergy HSA_ref HSA_synergy
##       <int> <dbl>  <dbl>   <dbl>   <dbl>       <dbl>   <dbl>       <dbl>
##  1        1  2500 50        93.3    79.4        13.9    71.3       20.9 
##  2        1  2500 12.5      92.3    79.4        12.9    54.2       39.0 
##  3        1  2500  3.12     82.7    67.9        14.8    54.2       30.7 
##  4        1  2500  0.781    75.2    37.2        38.1    54.2       21.3 
##  5        1  2500  0.195    57.3    37.2        20.1    54.2        7.75
##  6        1  2500  0        54.2    54.2         0      54.2        0   
##  7        1   625 50        93.7    79.4        14.3    71.3       22.8 
##  8        1   625 12.5      92.9    79.4        13.5    60.6       32.8 
##  9        1   625  3.12     83.4    67.9        15.6    60.6       25.3 
## 10        1   625  0.781    75.0    37.2        37.8    60.6       16.1 
## # ℹ 62 more rows
## # ℹ 5 more variables: Bliss_ref <dbl>, Bliss_synergy <dbl>, Loewe_ref <dbl>,
## #   Loewe_synergy <dbl>, Loewe_ci <dbl>
#4.2 Sensitivity scoring
res_2 <- CalculateSensitivity(
  data = res,
  correct_baseline = "non"
)
## Calculating sensitivity scores for block 1 ...
## Calculating sensitivity scores for block 2 ...
res_2
## $drug_pairs
## # A tibble: 2 × 14
##   block_id drug1  drug2 conc_unit1 conc_unit2 input_type replicate ic50_1 ic50_2
##      <int> <chr>  <chr> <chr>      <chr>      <chr>      <lgl>      <dbl>  <dbl>
## 1        1 ispin… ibru… nM         nM         viability  FALSE      2500    2.74
## 2        2 caner… ibru… nM         nM         viability  FALSE       973.   1.44
## # ℹ 5 more variables: ri_1 <dbl>, ri_2 <dbl>, css1_ic502 <dbl>,
## #   css2_ic501 <dbl>, css <dbl>
## 
## $response
## # A tibble: 72 × 5
##    block_id conc1  conc2 response response_origin
##       <int> <dbl>  <dbl>    <dbl>           <dbl>
##  1        1  2500 50         92.2            92.2
##  2        1  2500 12.5       93.2            93.2
##  3        1  2500  3.12      84.9            84.9
##  4        1  2500  0.781     75.5            75.5
##  5        1  2500  0.195     62.0            62.0
##  6        1  2500  0         54.2            54.2
##  7        1   625 50         94.1            94.1
##  8        1   625 12.5       93.4            93.4
##  9        1   625  3.12      85.9            85.9
## 10        1   625  0.781     76.7            76.7
## # ℹ 62 more rows
sensitive_columns <- c(
  "block_id", "drug1", "drug2",
  "ic50_1", "ic50_2",
  "ri_1", "ri_2",
  "css1_ic502", "css2_ic501", "css")
res_2$drug_pairs[, sensitive_columns]
## # A tibble: 2 × 10
##   block_id drug1     drug2 ic50_1 ic50_2  ri_1  ri_2 css1_ic502 css2_ic501   css
##      <int> <chr>     <chr>  <dbl>  <dbl> <dbl> <dbl>      <dbl>      <dbl> <dbl>
## 1        1 ispinesib ibru…  2500    2.74  60.0  27.0       85.9      82.8   84.3
## 2        2 canertin… ibru…   973.   1.44 -48.0  45.2      -35.9      -6.99 -21.4
#5 Visualization
for (i in c(1, 2)){
  PlotDoseResponseCurve(
    data = res_2,
    plot_block = 1,
    drug_index = i,
    plot_new = FALSE,
    record_plot = FALSE
  )
}

#5.2 Two-drug combination visualization
#5.2.1 Heatmap
Plot2DrugHeatmap(
  data = res_2,
  plot_block = 1,
  drugs = c(1, 2),
  plot_value = "response",
  dynamic = FALSE,
  summary_statistic = c("mean",  "median")
)

Plot2DrugHeatmap(
  data = res_1,
  plot_block = 1,
  drugs = c(1, 2),
  plot_value = "ZIP_synergy",
  dynamic = FALSE,
  summary_statistic = c( "quantile_25", "quantile_75")
)

#5.2.2 2D contour plot
Plot2DrugContour(
  data = res_2,
  plot_block = 1,
  drugs = c(1, 2),
  plot_value = "response",
  dynamic = FALSE,
  summary_statistic = c("mean", "median")
)

Plot2DrugContour(
  data = res_1,
  plot_block = 1,
  drugs = c(1, 2),
  plot_value = "ZIP_synergy",
  dynamic = FALSE,
  summary_statistic = c("quantile_25", "quantile_75")
)

#5.2.3 3D surface plot
Plot2DrugSurface(
  data = res,
  plot_block = 1,
  drugs = c(1, 2),
  plot_value = "response",
  dynamic = FALSE,
  summary_statistic = c("mean", "quantile_25", "median", "quantile_75")
)

Plot2DrugSurface(
  data = res_1,
  plot_block = 1,
  drugs = c(1, 2),
  plot_value = "ZIP_synergy",
  dynamic = FALSE,
  summary_statistic = c("mean", "quantile_25", "median", "quantile_75")
)

#5.3 Plotting wrapper for two-drug combination
PlotDoseResponse(
  data = res_2,
  block_ids = c(1, 2),
  drugs = c(1,2),
  save_file = TRUE,
  file_type = "png"
)

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values
## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values
## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values
## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values
## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values
## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values
## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values
## $`1`
## 
## $`2`
PlotSynergy(
  data = res_1,
  type = "2D",
  method = "ZIP",
  block_ids = c(1, 2),
  drugs = c(1,2),
  save_file = TRUE,
  file_type = "png"
)
## $`1`
## 
## $`2`
#5.4 Synergy barometer
# Block1: ispinesib (drug1) 9.7656 nM + ibrutinib (drug2) 50 nM
PlotBarometer(
  data = res,
  plot_block = 1,
  plot_concs = c(9.7656, 50), 
  needle_text_offset = 2.5 # Move the texts below the needle
)
# Block2: Canertinib (drug1) 625 nM + Ibrutinib (drug2) 12.5 nM
PlotBarometer(
  data = res, 
  plot_block = 2, 
  plot_concs = c(625, 12.5),
  needle_text_offset = -2.5 # Move the texts above the needle
)
#5.5 Barplot
PlotMultiDrugBar(
  data = res_1,
  plot_block = 1,
  plot_value = c("response", "ZIP_synergy", "Loewe_synergy", "HSA_synergy", "Bliss_synergy"),
  sort_by = "response",
  highlight_row = c(9.7656, 50),
  highlight_label_size = 8
)
# #5.6 SS plot
# PlotSensitivitySynergy(
#   data = res_2,
#   plot_synergy = "ZIP",
#   show_labels = TRUE,
#   dynamic = FALSE
# )
#6 Data with replicates
data("ONEIL_screening_data")
head(ONEIL_screening_data, 30)
##    block_id   drug1     drug2 cell_line_name  conc1  conc2  response conc_unit
## 1         1 MK-1775 Niraparib          OCUBM 0.0000  0.000 -0.000626        uM
## 2         1 MK-1775 Niraparib          OCUBM 0.0000  0.223  2.127464        uM
## 3         1 MK-1775 Niraparib          OCUBM 0.0000  0.775  2.268122        uM
## 4         1 MK-1775 Niraparib          OCUBM 0.0000  2.750 24.505645        uM
## 5         1 MK-1775 Niraparib          OCUBM 0.0000 10.000 44.475959        uM
## 6         1 MK-1775 Niraparib          OCUBM 0.0325  0.000  2.371026        uM
## 7         1 MK-1775 Niraparib          OCUBM 0.0325  0.223 91.690487        uM
## 8         1 MK-1775 Niraparib          OCUBM 0.0325  0.775 89.622390        uM
## 9         1 MK-1775 Niraparib          OCUBM 0.0325  2.750 89.346984        uM
## 10        1 MK-1775 Niraparib          OCUBM 0.0325 10.000 83.031782        uM
## 11        1 MK-1775 Niraparib          OCUBM 0.0800  0.000 10.368144        uM
## 12        1 MK-1775 Niraparib          OCUBM 0.0800  0.223 88.524738        uM
## 13        1 MK-1775 Niraparib          OCUBM 0.0800  0.775 89.724379        uM
## 14        1 MK-1775 Niraparib          OCUBM 0.0800  2.750 95.815944        uM
## 15        1 MK-1775 Niraparib          OCUBM 0.0800 10.000 91.430075        uM
## 16        1 MK-1775 Niraparib          OCUBM 0.2000  0.000 27.062045        uM
## 17        1 MK-1775 Niraparib          OCUBM 0.2000  0.223 35.194576        uM
## 18        1 MK-1775 Niraparib          OCUBM 0.2000  0.775 44.260785        uM
## 19        1 MK-1775 Niraparib          OCUBM 0.2000  2.750 73.993821        uM
## 20        1 MK-1775 Niraparib          OCUBM 0.2000 10.000 93.264011        uM
## 21        1 MK-1775 Niraparib          OCUBM 0.5000  0.000 60.773370        uM
## 22        1 MK-1775 Niraparib          OCUBM 0.5000  0.223 66.474695        uM
## 23        1 MK-1775 Niraparib          OCUBM 0.5000  0.775 65.412125        uM
## 24        1 MK-1775 Niraparib          OCUBM 0.5000  2.750 86.510594        uM
## 25        1 MK-1775 Niraparib          OCUBM 0.5000 10.000 95.319620        uM
## 26        1 MK-1775 Niraparib          OCUBM 0.0000  0.000 -0.000626        uM
## 27        1 MK-1775 Niraparib          OCUBM 0.0000  0.223  2.127464        uM
## 28        1 MK-1775 Niraparib          OCUBM 0.0000  0.775  2.268122        uM
## 29        1 MK-1775 Niraparib          OCUBM 0.0000  2.750 24.505645        uM
## 30        1 MK-1775 Niraparib          OCUBM 0.0000 10.000 44.475959        uM
data_2 <- ONEIL_screening_data
unique(data_2[, c(1,2,3,4)])
##     block_id      drug1              drug2 cell_line_name
## 1          1    MK-1775          Niraparib          OCUBM
## 101        2 Paclitaxel L-778123 free base       NCIH2122
dim(data_2) #[1] 200   8
## [1] 200   8
#table(data_2$block_id, data_2$cell_line_name, data_2$conc1)
res_1 <- ReshapeData(
  data = ONEIL_screening_data,
  data_type = "inhibition",
  impute = TRUE,
  impute_method = NULL,
  noise = TRUE,
  iteration = 10, # Number of iterations for bootstrapping
  seed = 1
)
res_1
## $drug_pairs
## # A tibble: 2 × 9
##   block_id drug1      drug2           conc_unit1 conc_unit2 input_type replicate
##      <int> <chr>      <chr>           <chr>      <chr>      <chr>      <lgl>    
## 1        1 MK-1775    Niraparib       uM         uM         inhibition TRUE     
## 2        2 Paclitaxel L-778123 free … uM         uM         inhibition TRUE     
## # ℹ 2 more variables: response_p_value <chr>, response_origin_p_value <chr>
## 
## $response
## # A tibble: 200 × 5
##    block_id  conc1  conc2 response response_origin
##       <int>  <dbl>  <dbl>    <dbl>           <dbl>
##  1        1 0       0     -0.00125       -0.000626
##  2        1 0       0.223  2.13           2.13    
##  3        1 0       0.775  2.27           2.27    
##  4        1 0       2.75  24.5           24.5     
##  5        1 0      10     44.5           44.5     
##  6        1 0.0325  0      2.37           2.37    
##  7        1 0.0325  0.223 91.7           91.7     
##  8        1 0.0325  0.775 89.6           89.6     
##  9        1 0.0325  2.75  89.3           89.3     
## 10        1 0.0325 10     83.0           83.0     
## # ℹ 190 more rows
## 
## $response_statistics
## # A tibble: 50 × 14
##    block_id  conc1  conc2 response_sd response_mean response_origin_sd
##       <int>  <dbl>  <dbl>       <dbl>         <dbl>              <dbl>
##  1        1 0       0        0.000462     -0.000624               0   
##  2        1 0       0.223    0.000349      2.13                   0   
##  3        1 0       0.775    0.000819      2.27                   0   
##  4        1 0       2.75     0.00116      24.5                    0   
##  5        1 0      10        0.000827     44.5                    0   
##  6        1 0.0325  0        0.00139       2.37                   0   
##  7        1 0.0325  0.223   31.0          57.8                   31.0 
##  8        1 0.0325  0.775   35.5          55.1                   35.5 
##  9        1 0.0325  2.75    17.0          75.6                   17.0 
## 10        1 0.0325 10        3.13         84.3                    3.13
## # ℹ 40 more rows
## # ℹ 8 more variables: response_origin_mean <dbl>, n <int>, response_sem <dbl>,
## #   response_ci_left <dbl>, response_ci_right <dbl>, response_origin_sem <dbl>,
## #   response_origin_ci_left <dbl>, response_origin_ci_right <dbl>
#6.2 Drug synergy scoring
res_sy <- CalculateSynergy(
  data = res_1,
  method = c("ZIP", "HSA", "Bliss", "Loewe"),
  Emin = NA,
  Emax = NA,
  correct_baseline = "non")
## Calculating synergy score(s) for block 1...
## Calculating synergy score(s) for block 2...
res_sy$drug_pairs
## # A tibble: 2 × 17
##   block_id drug1      drug2           conc_unit1 conc_unit2 input_type replicate
##      <int> <chr>      <chr>           <chr>      <chr>      <chr>      <lgl>    
## 1        1 MK-1775    Niraparib       uM         uM         inhibition TRUE     
## 2        2 Paclitaxel L-778123 free … uM         uM         inhibition TRUE     
## # ℹ 10 more variables: response_p_value <chr>, response_origin_p_value <chr>,
## #   ZIP_synergy_p_value <chr>, HSA_synergy_p_value <chr>,
## #   Bliss_synergy_p_value <chr>, Loewe_synergy_p_value <chr>,
## #   ZIP_synergy <dbl>, HSA_synergy <dbl>, Bliss_synergy <dbl>,
## #   Loewe_synergy <dbl>
res_sy$synergy_scores_statistics
## # A tibble: 50 × 53
##    block_id  conc1  conc2 ZIP_fit_mean ZIP_fit_sd ZIP_fit_sem ZIP_fit_ci_left
##       <int>  <dbl>  <dbl>        <dbl>      <dbl>       <dbl>           <dbl>
##  1        1 0       0        -0.000660   0.000250   0.0000789        -0.00101
##  2        1 0       0.223     2.13       0.000191   0.0000604         2.13   
##  3        1 0       0.775     2.27       0.000528   0.000167          2.27   
##  4        1 0       2.75     24.5        0.000466   0.000147         24.5    
##  5        1 0      10        44.5        0.000352   0.000111         44.5    
##  6        1 0.0325  0         2.37       0.000740   0.000234          2.37   
##  7        1 0.0325  0.223    52.1       11.9        3.76             32.8    
##  8        1 0.0325  0.775    59.5        8.57       2.71             43.5    
##  9        1 0.0325  2.75     74.5        5.78       1.83             66.3    
## 10        1 0.0325 10        83.1        1.57       0.498            81.6    
## # ℹ 40 more rows
## # ℹ 46 more variables: ZIP_fit_ci_right <dbl>, ZIP_ref_mean <dbl>,
## #   ZIP_ref_sd <dbl>, ZIP_ref_sem <dbl>, ZIP_ref_ci_left <dbl>,
## #   ZIP_ref_ci_right <dbl>, ZIP_synergy_mean <dbl>, ZIP_synergy_sd <dbl>,
## #   ZIP_synergy_sem <dbl>, ZIP_synergy_ci_left <dbl>,
## #   ZIP_synergy_ci_right <dbl>, HSA_ref_mean <dbl>, HSA_ref_sd <dbl>,
## #   HSA_ref_sem <dbl>, HSA_ref_ci_left <dbl>, HSA_ref_ci_right <dbl>, …
#6.3 Sensitivity scoring
res_2 <- CalculateSensitivity(
  data = res_1,
  correct_baseline = "non",
  iteration = 10 # Number of iterations for bootstrapping
)
## Calculating sensitivity scores for block 1 ...
##   |                                                                              |                                                                      |   0%  |                                                                              |========                                                              |  11%  |                                                                              |================                                                      |  22%  |                                                                              |=======================                                               |  33%  |                                                                              |===============================                                       |  44%  |                                                                              |=======================================                               |  56%  |                                                                              |===============================================                       |  67%  |                                                                              |======================================================                |  78%  |                                                                              |==============================================================        |  89%  |                                                                              |======================================================================| 100%
## 
## Calculating sensitivity scores for block 2 ...
##   |                                                                              |                                                                      |   0%  |                                                                              |========                                                              |  11%  |                                                                              |================                                                      |  22%  |                                                                              |=======================                                               |  33%  |                                                                              |===============================                                       |  44%  |                                                                              |=======================================                               |  56%  |                                                                              |===============================================                       |  67%  |                                                                              |======================================================                |  78%  |                                                                              |==============================================================        |  89%  |                                                                              |======================================================================| 100%
## 
res_2
## $drug_pairs
## # A tibble: 2 × 16
##   block_id drug1      drug2           conc_unit1 conc_unit2 input_type replicate
##      <int> <chr>      <chr>           <chr>      <chr>      <chr>      <lgl>    
## 1        1 MK-1775    Niraparib       uM         uM         inhibition TRUE     
## 2        2 Paclitaxel L-778123 free … uM         uM         inhibition TRUE     
## # ℹ 9 more variables: response_p_value <chr>, response_origin_p_value <chr>,
## #   ic50_1 <dbl>, ic50_2 <dbl>, ri_1 <dbl>, ri_2 <dbl>, css1_ic502 <dbl>,
## #   css2_ic501 <dbl>, css <dbl>
## 
## $response
## # A tibble: 200 × 5
##    block_id  conc1  conc2 response response_origin
##       <int>  <dbl>  <dbl>    <dbl>           <dbl>
##  1        1 0       0     -0.00125       -0.000626
##  2        1 0       0.223  2.13           2.13    
##  3        1 0       0.775  2.27           2.27    
##  4        1 0       2.75  24.5           24.5     
##  5        1 0      10     44.5           44.5     
##  6        1 0.0325  0      2.37           2.37    
##  7        1 0.0325  0.223 91.7           91.7     
##  8        1 0.0325  0.775 89.6           89.6     
##  9        1 0.0325  2.75  89.3           89.3     
## 10        1 0.0325 10     83.0           83.0     
## # ℹ 190 more rows
## 
## $response_statistics
## # A tibble: 50 × 14
##    block_id  conc1  conc2 response_sd response_mean response_origin_sd
##       <int>  <dbl>  <dbl>       <dbl>         <dbl>              <dbl>
##  1        1 0       0        0.000462     -0.000624               0   
##  2        1 0       0.223    0.000349      2.13                   0   
##  3        1 0       0.775    0.000819      2.27                   0   
##  4        1 0       2.75     0.00116      24.5                    0   
##  5        1 0      10        0.000827     44.5                    0   
##  6        1 0.0325  0        0.00139       2.37                   0   
##  7        1 0.0325  0.223   31.0          57.8                   31.0 
##  8        1 0.0325  0.775   35.5          55.1                   35.5 
##  9        1 0.0325  2.75    17.0          75.6                   17.0 
## 10        1 0.0325 10        3.13         84.3                    3.13
## # ℹ 40 more rows
## # ℹ 8 more variables: response_origin_mean <dbl>, n <int>, response_sem <dbl>,
## #   response_ci_left <dbl>, response_ci_right <dbl>, response_origin_sem <dbl>,
## #   response_origin_ci_left <dbl>, response_origin_ci_right <dbl>
## 
## $sensitivity_scores_statistics
##   block_id         ic50_1_mean       ic50_2_mean ri_1_mean ri_2_mean
## 1        1                 0.5  2.64214451637003   22.0257   16.8071
## 2        2 0.00157428688872753 0.375135166419372   62.6112   48.5743
##   css1_ic502_mean css2_ic501_mean css_mean               ic50_1_sd
## 1           79.88         80.2685 80.07425                       0
## 2          0.6427          0.5584  0.60055 0.000000316559225621089
##                ic50_2_sd              ri_1_sd              ri_2_sd
## 1  0.0000488815419053813  0.00525039681040095 0.000316227766017224
## 2 0.00000624302934321902 0.000421637021357797 0.000483045891541954
##      css1_ic502_sd    css2_ic501_sd           css_sd              ic50_1_sem
## 1 3.68889212516592 5.62709696715614 3.47403477602053                       0
## 2 1.14201236128745 1.83968440530193 1.38116463436559 0.000000100104816730177
##               ic50_2_sem            ri_1_sem             ri_2_sem
## 1  0.0000154577007961972 0.00166032125405502 0.000100000000000122
## 2 0.00000197421922238372 0.00013333333333397 0.000152752523165924
##      css1_ic502_sem    css2_ic501_sem           css_sem      ic50_1_ci_left
## 1  1.16653011581832  1.77944430308391  1.09858625628578                 0.5
## 2 0.361136017773544 0.581759289664644 0.436762606826892 0.00157400274871024
##      ic50_2_ci_left ri_1_ci_left ri_2_ci_left css1_ic502_ci_left
## 1  2.64209193225961     22.01935       16.807           73.71755
## 2 0.375124678423372       62.611       48.574          -1.440475
##   css2_ic501_ci_left css_ci_left     ic50_1_ci_right   ic50_2_ci_right
## 1            70.2681  74.8485625                 0.5  2.64222224300618
## 2            -1.9396  -1.5926125 0.00157495595803027 0.375144201469938
##   ri_1_ci_right ri_2_ci_right css1_ic502_ci_right css2_ic501_ci_right
## 1     22.036075     16.807775            85.10155           86.591475
## 2        62.612        48.575              2.2193              3.5085
##   css_ci_right ri_1_p_value ri_2_p_value css_p_value
## 1    84.130825     < 2e-324     < 2e-324   6.91e-104
## 2       2.6736     < 2e-324     < 2e-324    6.77e-01
res_2$sensitivity_scores_statistics
##   block_id         ic50_1_mean       ic50_2_mean ri_1_mean ri_2_mean
## 1        1                 0.5  2.64214451637003   22.0257   16.8071
## 2        2 0.00157428688872753 0.375135166419372   62.6112   48.5743
##   css1_ic502_mean css2_ic501_mean css_mean               ic50_1_sd
## 1           79.88         80.2685 80.07425                       0
## 2          0.6427          0.5584  0.60055 0.000000316559225621089
##                ic50_2_sd              ri_1_sd              ri_2_sd
## 1  0.0000488815419053813  0.00525039681040095 0.000316227766017224
## 2 0.00000624302934321902 0.000421637021357797 0.000483045891541954
##      css1_ic502_sd    css2_ic501_sd           css_sd              ic50_1_sem
## 1 3.68889212516592 5.62709696715614 3.47403477602053                       0
## 2 1.14201236128745 1.83968440530193 1.38116463436559 0.000000100104816730177
##               ic50_2_sem            ri_1_sem             ri_2_sem
## 1  0.0000154577007961972 0.00166032125405502 0.000100000000000122
## 2 0.00000197421922238372 0.00013333333333397 0.000152752523165924
##      css1_ic502_sem    css2_ic501_sem           css_sem      ic50_1_ci_left
## 1  1.16653011581832  1.77944430308391  1.09858625628578                 0.5
## 2 0.361136017773544 0.581759289664644 0.436762606826892 0.00157400274871024
##      ic50_2_ci_left ri_1_ci_left ri_2_ci_left css1_ic502_ci_left
## 1  2.64209193225961     22.01935       16.807           73.71755
## 2 0.375124678423372       62.611       48.574          -1.440475
##   css2_ic501_ci_left css_ci_left     ic50_1_ci_right   ic50_2_ci_right
## 1            70.2681  74.8485625                 0.5  2.64222224300618
## 2            -1.9396  -1.5926125 0.00157495595803027 0.375144201469938
##   ri_1_ci_right ri_2_ci_right css1_ic502_ci_right css2_ic501_ci_right
## 1     22.036075     16.807775            85.10155           86.591475
## 2        62.612        48.575              2.2193              3.5085
##   css_ci_right ri_1_p_value ri_2_p_value css_p_value
## 1    84.130825     < 2e-324     < 2e-324   6.91e-104
## 2       2.6736     < 2e-324     < 2e-324    6.77e-01
#6.4 Visualization
# Standard error of mean
Plot2DrugHeatmap(
  data = res_2,
  plot_block = 1,
  drugs = c(1, 2),
  plot_value = "response",
  dynamic = FALSE,
  statistic = "sem",
  summary_statistic = c("mean",  "median")
)

# 95% confidence interval
Plot2DrugHeatmap(
  data = res_sy,
  plot_block = 1,
  drugs = c(1, 2),
  plot_value = "ZIP_synergy",
  statistic = "ci",
  dynamic = FALSE,
  summary_statistic = c("quantile_25", "quantile_75")
)
#7 Higher-order drug combination screening
data("NCATS_screening_data")
head(NCATS_screening_data)
##   block_id       drug1                       drug2                drug3   conc1
## 1        1 Piperaquine Pyronaridine Tetraphosphate Darunavir Ethanolate 0.60000
## 2        1 Piperaquine Pyronaridine Tetraphosphate Darunavir Ethanolate 0.30000
## 3        1 Piperaquine Pyronaridine Tetraphosphate Darunavir Ethanolate 0.15000
## 4        1 Piperaquine Pyronaridine Tetraphosphate Darunavir Ethanolate 0.07500
## 5        1 Piperaquine Pyronaridine Tetraphosphate Darunavir Ethanolate 0.03750
## 6        1 Piperaquine Pyronaridine Tetraphosphate Darunavir Ethanolate 0.01875
##   conc2 conc3 response conc_unit1 conc_unit2 conc_unit3
## 1 0.075     0 3.079183         uM         uM         uM
## 2 0.075     0 3.867034         uM         uM         uM
## 3 0.075     0 1.937995         uM         uM         uM
## 4 0.075     0 1.601282         uM         uM         uM
## 5 0.075     0 4.680111         uM         uM         uM
## 6 0.075     0 4.592774         uM         uM         uM
data_3 <- NCATS_screening_data
head(data_3, 50)
##    block_id       drug1                       drug2                drug3
## 1         1 Piperaquine Pyronaridine Tetraphosphate Darunavir Ethanolate
## 2         1 Piperaquine Pyronaridine Tetraphosphate Darunavir Ethanolate
## 3         1 Piperaquine Pyronaridine Tetraphosphate Darunavir Ethanolate
## 4         1 Piperaquine Pyronaridine Tetraphosphate Darunavir Ethanolate
## 5         1 Piperaquine Pyronaridine Tetraphosphate Darunavir Ethanolate
## 6         1 Piperaquine Pyronaridine Tetraphosphate Darunavir Ethanolate
## 7         1 Piperaquine Pyronaridine Tetraphosphate Darunavir Ethanolate
## 8         1 Piperaquine Pyronaridine Tetraphosphate Darunavir Ethanolate
## 9         1 Piperaquine Pyronaridine Tetraphosphate Darunavir Ethanolate
## 10        1 Piperaquine Pyronaridine Tetraphosphate Darunavir Ethanolate
## 11        1 Piperaquine Pyronaridine Tetraphosphate Darunavir Ethanolate
## 12        1 Piperaquine Pyronaridine Tetraphosphate Darunavir Ethanolate
## 13        1 Piperaquine Pyronaridine Tetraphosphate Darunavir Ethanolate
## 14        1 Piperaquine Pyronaridine Tetraphosphate Darunavir Ethanolate
## 15        1 Piperaquine Pyronaridine Tetraphosphate Darunavir Ethanolate
## 16        1 Piperaquine Pyronaridine Tetraphosphate Darunavir Ethanolate
## 17        1 Piperaquine Pyronaridine Tetraphosphate Darunavir Ethanolate
## 18        1 Piperaquine Pyronaridine Tetraphosphate Darunavir Ethanolate
## 19        1 Piperaquine Pyronaridine Tetraphosphate Darunavir Ethanolate
## 20        1 Piperaquine Pyronaridine Tetraphosphate Darunavir Ethanolate
## 21        1 Piperaquine Pyronaridine Tetraphosphate Darunavir Ethanolate
## 22        1 Piperaquine Pyronaridine Tetraphosphate Darunavir Ethanolate
## 23        1 Piperaquine Pyronaridine Tetraphosphate Darunavir Ethanolate
## 24        1 Piperaquine Pyronaridine Tetraphosphate Darunavir Ethanolate
## 25        1 Piperaquine Pyronaridine Tetraphosphate Darunavir Ethanolate
## 26        1 Piperaquine Pyronaridine Tetraphosphate Darunavir Ethanolate
## 27        1 Piperaquine Pyronaridine Tetraphosphate Darunavir Ethanolate
## 28        1 Piperaquine Pyronaridine Tetraphosphate Darunavir Ethanolate
## 29        1 Piperaquine Pyronaridine Tetraphosphate Darunavir Ethanolate
## 30        1 Piperaquine Pyronaridine Tetraphosphate Darunavir Ethanolate
## 31        1 Piperaquine Pyronaridine Tetraphosphate Darunavir Ethanolate
## 32        1 Piperaquine Pyronaridine Tetraphosphate Darunavir Ethanolate
## 33        1 Piperaquine Pyronaridine Tetraphosphate Darunavir Ethanolate
## 34        1 Piperaquine Pyronaridine Tetraphosphate Darunavir Ethanolate
## 35        1 Piperaquine Pyronaridine Tetraphosphate Darunavir Ethanolate
## 36        1 Piperaquine Pyronaridine Tetraphosphate Darunavir Ethanolate
## 37        1 Piperaquine Pyronaridine Tetraphosphate Darunavir Ethanolate
## 38        1 Piperaquine Pyronaridine Tetraphosphate Darunavir Ethanolate
## 39        1 Piperaquine Pyronaridine Tetraphosphate Darunavir Ethanolate
## 40        1 Piperaquine Pyronaridine Tetraphosphate Darunavir Ethanolate
## 41        1 Piperaquine Pyronaridine Tetraphosphate Darunavir Ethanolate
## 42        1 Piperaquine Pyronaridine Tetraphosphate Darunavir Ethanolate
## 43        1 Piperaquine Pyronaridine Tetraphosphate Darunavir Ethanolate
## 44        1 Piperaquine Pyronaridine Tetraphosphate Darunavir Ethanolate
## 45        1 Piperaquine Pyronaridine Tetraphosphate Darunavir Ethanolate
## 46        1 Piperaquine Pyronaridine Tetraphosphate Darunavir Ethanolate
## 47        1 Piperaquine Pyronaridine Tetraphosphate Darunavir Ethanolate
## 48        1 Piperaquine Pyronaridine Tetraphosphate Darunavir Ethanolate
## 49        1 Piperaquine Pyronaridine Tetraphosphate Darunavir Ethanolate
## 50        1 Piperaquine Pyronaridine Tetraphosphate Darunavir Ethanolate
##         conc1     conc2 conc3  response conc_unit1 conc_unit2 conc_unit3
## 1  0.60000000 0.0750000     0  3.079183         uM         uM         uM
## 2  0.30000000 0.0750000     0  3.867034         uM         uM         uM
## 3  0.15000000 0.0750000     0  1.937995         uM         uM         uM
## 4  0.07500000 0.0750000     0  1.601282         uM         uM         uM
## 5  0.03750000 0.0750000     0  4.680111         uM         uM         uM
## 6  0.01875000 0.0750000     0  4.592774         uM         uM         uM
## 7  0.00937500 0.0750000     0  3.709694         uM         uM         uM
## 8  0.00468750 0.0750000     0  3.525223         uM         uM         uM
## 9  0.00234375 0.0750000     0  2.785740         uM         uM         uM
## 10 0.00000000 0.0750000     0  3.828242         uM         uM         uM
## 11 0.60000000 0.0375000     0  0.469935         uM         uM         uM
## 12 0.30000000 0.0375000     0  2.849359         uM         uM         uM
## 13 0.15000000 0.0375000     0  1.806546         uM         uM         uM
## 14 0.07500000 0.0375000     0  2.444195         uM         uM         uM
## 15 0.03750000 0.0375000     0  1.544446         uM         uM         uM
## 16 0.01875000 0.0375000     0  3.905338         uM         uM         uM
## 17 0.00937500 0.0375000     0  6.088852         uM         uM         uM
## 18 0.00468750 0.0375000     0  3.605466         uM         uM         uM
## 19 0.00234375 0.0375000     0  4.147887         uM         uM         uM
## 20 0.00000000 0.0375000     0  4.928156         uM         uM         uM
## 21 0.60000000 0.0187500     0  1.604961         uM         uM         uM
## 22 0.30000000 0.0187500     0  1.695712         uM         uM         uM
## 23 0.15000000 0.0187500     0  3.259754         uM         uM         uM
## 24 0.07500000 0.0187500     0  3.967405         uM         uM         uM
## 25 0.03750000 0.0187500     0  5.695037         uM         uM         uM
## 26 0.01875000 0.0187500     0 15.442645         uM         uM         uM
## 27 0.00937500 0.0187500     0 52.692850         uM         uM         uM
## 28 0.00468750 0.0187500     0 21.773823         uM         uM         uM
## 29 0.00234375 0.0187500     0 26.626480         uM         uM         uM
## 30 0.00000000 0.0187500     0 59.791220         uM         uM         uM
## 31 0.60000000 0.0093750     0  1.658162         uM         uM         uM
## 32 0.30000000 0.0093750     0  1.333064         uM         uM         uM
## 33 0.15000000 0.0093750     0  2.254580         uM         uM         uM
## 34 0.07500000 0.0093750     0  4.083958         uM         uM         uM
## 35 0.03750000 0.0093750     0  5.890681         uM         uM         uM
## 36 0.01875000 0.0093750     0 47.977493         uM         uM         uM
## 37 0.00937500 0.0093750     0 25.577060         uM         uM         uM
## 38 0.00468750 0.0093750     0 38.347150         uM         uM         uM
## 39 0.00234375 0.0093750     0 52.555725         uM         uM         uM
## 40 0.00000000 0.0093750     0 52.755226         uM         uM         uM
## 41 0.60000000 0.0046875     0  1.403909         uM         uM         uM
## 42 0.30000000 0.0046875     0  1.004641         uM         uM         uM
## 43 0.15000000 0.0046875     0  2.196902         uM         uM         uM
## 44 0.07500000 0.0046875     0  7.130911         uM         uM         uM
## 45 0.03750000 0.0046875     0 11.649027         uM         uM         uM
## 46 0.01875000 0.0046875     0 54.259110         uM         uM         uM
## 47 0.00937500 0.0046875     0 75.981900         uM         uM         uM
## 48 0.00468750 0.0046875     0 67.842674         uM         uM         uM
## 49 0.00234375 0.0046875     0 91.257770         uM         uM         uM
## 50 0.00000000 0.0046875     0 87.117460         uM         uM         uM
res_1 <- ReshapeData(
  data = NCATS_screening_data,
  data_type = "inhibition",
  impute = TRUE,
  impute_method = NULL,
  noise = TRUE,
  seed = 1
)
res_1
## $drug_pairs
## # A tibble: 2 × 9
##   block_id drug1       drug2   drug3 conc_unit1 conc_unit2 conc_unit3 input_type
##      <int> <chr>       <chr>   <chr> <chr>      <chr>      <chr>      <chr>     
## 1        1 Piperaquine Pyrona… Daru… uM         uM         uM         inhibition
## 2        2 Piperaquine Pyrona… Lopi… uM         uM         uM         inhibition
## # ℹ 1 more variable: replicate <lgl>
## 
## $response
## # A tibble: 2,400 × 6
##    block_id   conc1 conc2 conc3 response response_origin
##       <int>   <dbl> <dbl> <dbl>    <dbl>           <dbl>
##  1        1 0.6     0.075     0     3.08            3.08
##  2        1 0.3     0.075     0     3.87            3.87
##  3        1 0.15    0.075     0     1.94            1.94
##  4        1 0.075   0.075     0     1.60            1.60
##  5        1 0.0375  0.075     0     4.68            4.68
##  6        1 0.0188  0.075     0     4.59            4.59
##  7        1 0.00938 0.075     0     3.71            3.71
##  8        1 0.00469 0.075     0     3.53            3.53
##  9        1 0.00234 0.075     0     2.79            2.79
## 10        1 0       0.075     0     3.83            3.83
## # ℹ 2,390 more rows
#ref https://www.bioconductor.org/packages/release/bioc/vignettes/synergyfinder/inst/doc/User_tutorual_of_the_SynergyFinder_plus.html