Contents

1 Introduction

This vignette will guide users how to integrate large-scale genetic and drug screens to do association analysis and use this information to both predict the drug’s primary target(s) or secondary target and investigate whether the primary target specifically targets the wild-type or mutated target forms. This will be done by three parts: Core Analysis, and application, and conclusion. The result from core analysis will be used for the application part. We also give an example for interpreting the result in the conclusion part.

2 Part I: Core Analysis

The core analysis includes loading the necessary data, performing the core analysis, and saving the results. Specifically, for a given drug, the core analysis includes generating a similarity score between the viability after drug treatment and each gene knockout,and computing if the drug may differential bind to the known drug target mutant form or WT form, by calculating this similarity in cell lines with known target WT vs. mutant form, and finally, finding the secondary targets of the drug by repeating this analysis in the cell lines where the primary target is not expressed.

Below is the step-by-step scripts for this Core analysis part:

2.1 Data Loading and Preparation

Users can use the Depmap2DeepTarget function and following examples to download the data needed. Here, the script loads OntargetM object and prepare the drug response scores (secondary_prism ) matrix for the interesting drugs and Gene effect scores after CRISPR-KO matrix. We will use these two matrices to obtain the correlation information. Please note that OntargetM object only contains a small subset of data for demonstration.

secondary_prism: row names is the drug ID and column names are cell lines. The values are the response scores. avana_CRISPR: row names are the gene’s names and column are cell lines. The values are the effect scores of KO method.


library(DeepTarget)
data("OntargetM")
## "Below is the OnTargetM object containing a subset of public data downloading from depmap.org"
sapply(OntargetM,dim)
#>      DrugMetadata secondary_prism avana_CRISPR mutations_mat expression_20Q4
#> [1,]           11              16          487           476             550
#> [2,]            5             392          392           392             392
## drug of interest.
drug.name <- c('atiprimod','AMG-232','pitavastatin','Ro-4987655','alexidine','RGFP966','dabrafenib','olaparib','CGM097','ibrutinib','palbociclib')
## data preparation for these drugs
## the secondary prism contain the response scores, where columns are cell lines and row names for Broad IDs of the drug.
## First, Obtain the broad ID for these interesting drug.
Broad.IDs <- OntargetM$DrugMetadata$broad_id_trimmed[which(OntargetM$DrugMetadata$name %in% drug.name)]
## the drug response has duplicated assays so we have 16 rows returned for 11 drugs.
sec.prism.f <- OntargetM$secondary_prism[which ( row.names(OntargetM$secondary_prism) %in% Broad.IDs), ]
KO.GES <- OntargetM$avana_CRISPR

2.2 Computing Similarity Between Drug Treatment and Gene Knockout

The script computes the similarity Between Drug Treatment and Gene Knockout using computeCor function. We assign the correlation values as similarity scores.

Input: Drug Response Scores (DRS) and Knock-out Gene Expression Scores from CRIPSR method ( KO.GES). Output: a list of ID drugs where each drug contains a matrix of their correlation, p val, and FDR values.

List.sim <- NULL;
for (i in 1:nrow(sec.prism.f)){
    DRS <- as.data.frame(sec.prism.f[i,])
    DRS <- t(DRS)
    row.names(DRS) <- row.names(sec.prism.f)[i]
    out <- computeCor(row.names(sec.prism.f)[i],DRS,KO.GES)
    List.sim [[length(List.sim) + 1]] <- out
}
names(List.sim) <- row.names(sec.prism.f)

2.3 Performing Pathway Analysis Based on Drug Meta Data and the similarity output from above

Input: Drug metadata and the similarity scores obtained above.

The drug metadata provides the information for the drug including drug name, its targeted proteins (target column) and targeted pathways (moa column). For example, BMX and BTK are the targeted proteins for Bruton tyrosine kinase (BTK) inhibitor pathway.

Here, DoPWY() performs the pre-ranked gene set enrichment analysis using fgsea, where the similarity scores from all genes were ranked and the tested pathways and their targeted proteins were obtained from drug metadata explained above.

Output: The list of pathways enriched among the top-ranked genes to provide a pathway-level description of each drug’s predicted primary and secondary MOA.

metadata <- OntargetM$DrugMetadata
Pwy.Enr <- DoPWY(List.sim,metadata)

2.4 Predicting Similarity Across Known Targeted Genes and All Genes

The script predicts similarity Across Known Targeted Genes and All Genes using PredTarget and PredMaxSim functions. Input: List.sim: the list of similarity scores obtained above. meta data: drug information. Output: PredTarget(): a data frame contain the drug name and the max similarity scores among their targeted proteins. For example, if there are two proteins targeted for the same drug, the one has higher correlation will be likely the most targeted for that drug. PredMaxSim (): a data frame contain the drug name and the protein with the max similarity scores across all genes. For example, within a drug, the protein A with the highest similarity score will be assigned as best target for that drug.

DrugTarcomputeCor <- PredTarget(List.sim,metadata)
DrugGeneMaxSim <- PredMaxSim(List.sim,metadata)

2.5 Computing the Interaction

The script computes the interaction between the drug and knockout (KO) gene expression in terms of both mutant vs non-mutant and lower vs higher expression using DoInteractExp function and DoInteractMutant function. Input: Mutation matrix, expression matrix, drug response scores. Mutation matrix: row names are gene names and column names are cell lines. The values are mutant or non mutant (0 and 1) Expression matrix: row names are gene names and column names are cell lines. The values are gene expression. Drug response scores: The output from PredTarget(). We only focus on learning more about the interaction of these drugs with their best targets. output: DoInteractMutant(): a data frame contains the drug name and their strength from linear model function from drug response and gene expression scores in term of mutant/non-mutant group.

DoInteractExp(): a data frame contains the drug name and their strength from linear model function from drug response and gene expression scores in term of expression group based on cut-off values from expression values.

d.mt <- OntargetM$mutations_mat
d.expr <- OntargetM$expression_20Q4
out.MutantTarget <- NULL;
out.LowexpTarget <- NULL;
for (i in 1:nrow(sec.prism.f)){
    DRS=as.data.frame(sec.prism.f[i,])
    DRS <- t(DRS)
    row.names(DRS) <- row.names(sec.prism.f)[i]
    ## for mutant
    Out.M <- DoInteractMutant(DrugTarcomputeCor[i,],d.mt,DRS,KO.GES)
    TargetMutSpecificity <- data.frame(MaxTgt_Inter_Mut_strength=sapply(Out.M, function(x) x[1]), 
                                  MaxTgt_Inter_Mut_Pval=sapply(Out.M, function(x) x[2]))
    out.MutantTarget <- rbind(out.MutantTarget,TargetMutSpecificity)
    ## for expression.
    Out.Expr <- DoInteractExp(DrugTarcomputeCor[i,],d.expr,DRS,KO.GES,CutOff= 2)
    TargetExpSpecificity <- data.frame(
    MaxTgt_Inter_Exp_strength <- 
    sapply(Out.Expr, function(x) x[1]),
    MaxTgt_Inter_Exp_Pval <- sapply(Out.Expr, function(x) x[2]))
    out.LowexpTarget <- rbind (out.LowexpTarget,TargetExpSpecificity)
}

2.6 Interaction Assessment

This part of the script assesses whether the interaction result is true or false based on a certain cut-off, and the p-value from the above part.

Whether_interaction_Ex_based= ifelse( out.LowexpTarget$MaxTgt_Inter_Exp_strength <0
& out.LowexpTarget$MaxTgt_Inter_Exp_Pval <0.2,TRUE,FALSE)
predicted_resistance_mut= ifelse(
out.MutantTarget$MaxTgt_Inter_Mut_Pval<0.1,TRUE,FALSE)

2.7 Preparation for Output

Lastly, the script gathers the results into a final data frame and writes it to a CSV file to be used for the application part.

Pred.d <- NULL;
Pred.d <- cbind(DrugTarcomputeCor,DrugGeneMaxSim,out.MutantTarget,predicted_resistance_mut)
mutant.C <- sapply(Pred.d[,3],function(x)tryCatch(sum(d.mt[x,] ==1),error=function(e){NA}))
Pred.d$mutant.C <- mutant.C
Low.Exp.C = sapply(Pred.d[,3],
function(x)tryCatch(sum(d.expr[x,] < 2),error=function(e){NA})) 
Pred.d <- cbind(Pred.d, out.LowexpTarget, Whether_interaction_Ex_based,Low.Exp.C)

2.8 In addition to the output of prediction object, we also identify drugs with low primary target expressing cell lines

For the drugs where the primary target is not expressed in at least five cell lines, we will identify their secondary target below. This section identifies primary target genes that are not expressed in at least 5 cell lines.

Low.i <- which(Pred.d$Low.Exp.C >5)
Pred.d.f <- Pred.d[ Low.i,]
Low.Exp.G = sapply(Pred.d.f[,3],
function(x) tryCatch(names(which(d.expr[x,]<2)),error=function(e){NA}))
identical (names(Low.Exp.G),Pred.d.f[,3] )
#> [1] TRUE
sim.LowExp <- NULL;
sec.prism.f.f <- sec.prism.f[Low.i,]
identical (row.names(sec.prism.f.f) ,Pred.d.f[,1])
#> [1] TRUE

2.9 Calculating Drug KO Similarities in cell lines with low primary target

The following script performs calculations to determine DKS score in cell lines with low primary target expression. This DKS score is called Secondary DKS Score and denotes the secondary target probability.

for (i in 1:nrow(Pred.d.f)){
    DRS.L= sec.prism.f.f[i,Low.Exp.G[[unlist(Pred.d.f[i,3])]]]
    DRS.L <- t(as.data.frame(DRS.L))
    row.names(DRS.L) <- Pred.d.f[i,1]
    out <- computeCor(Pred.d.f[i,1],DRS.L,KO.GES)
    sim.LowExp [[length(sim.LowExp) + 1]] <- out
}
names(sim.LowExp) <- Pred.d.f[,1]

3 Part II: Application

For this section, we will use the information obtained above. First, we find a drug’s primary target(s) and visualize them. Next, we predict whether the drug specifically targets the wild-type or mutated target forms. We then predict the secondary target(s) that mediate its response when the primary target is not expressed. For more detail, please refer to the paper from this link: https://www.biorxiv.org/content/10.1101/2022.10.17.512424v1

3.1 Finding and visualizing a drug primary target

The script below generates the correlation plots for primary targets BRAF and MDM2 for the drugs Dabrafenib and AMG-232 respectively.

## This drug is unique in this Prediction data object.
DOI = 'AMG-232'
GOI = 'MDM2'
plotCor(DOI,GOI,Pred.d,sec.prism.f,KO.GES,plot=TRUE)

## Interpretation: The graph shows that there is a positive significant 
## correlation of MDM2 with drug AMG-232 (Correlation value: 0.54 
## and P val < 0.01)
DOI = 'dabrafenib'
GOI = 'BRAF'
## this drug has duplicated assay; which is row 4 and 5 in both Pred.d object and drug treatment.
## Here, let's look at the row 5 obtain the drug response for 'dabrafenib'
DRS <- as.data.frame(sec.prism.f[5,])
DRS <- t(DRS)
## set the rownames with the Broad ID of the DOI
row.names(DRS) <- row.names(sec.prism.f)[5]
identical ( Pred.d$DrugID, row.names(sec.prism.f))
#> [1] TRUE
## because the Pred.d and sec.prism.f have the same orders so we
plotCor(DOI,GOI,Pred.d[5,],DRS,KO.GES,plot=TRUE)

## Interpretation: The graph shows that there is a positive significant 
## correlation of BRAF with drug dabrafenib. (Correlation value(R): 0.58 and P val < 0.01)

3.2 Predicting whether the drug specifically targets the wild-type or mutated target forms

The script below shows whether the drugs, CGM097 and Dabrafenib, target the wild-type or mutated target forms of MDM2 and BRAF respectively from the Prediction object and then generates plots for visualization.

## preparing the data for mutation from Pred.d dataframe.
Pred.d.f <- Pred.d[,c(1:3,12:15)]
## only look at the mutated target forms.
Pred.d.f.f <- Pred.d.f[which (Pred.d.f$predicted_resistance_mut==TRUE), ]
## Let's start with CGM097, unique assay
DOI=Pred.d.f.f$drugName[3]
GOI=Pred.d.f.f$MaxTargetName[3]
DrugID <- Pred.d.f.f$DrugID[3]
DRS=as.data.frame(sec.prism.f[DrugID,])
DRS <- t(DRS)
row.names(DRS) <- DrugID
head(DRS)
#>           ACH-000461 ACH-000528 ACH-000792 ACH-000570 ACH-000769 ACH-000421
#> K79584249   1.411948         NA         NA   1.272592  0.9051468   1.708963
#>           ACH-000765 ACH-000800 ACH-000123 ACH-000313 ACH-000823 ACH-000138
#> K79584249    2.00138         NA  0.7148364         NA   1.359862   1.228982
#>           ACH-000383 ACH-000917 ACH-000984 ACH-000176 ACH-000587 ACH-000785
#> K79584249   1.055372   1.221043         NA   1.347385  0.8889264  0.9096401
#>           ACH-000627 ACH-000704 ACH-000276 ACH-000941 ACH-000856 ACH-000376
#> K79584249  0.9045914   1.463954   1.111391   1.273368  0.9075827   1.229972
#>           ACH-000685 ACH-000880 ACH-000035 ACH-000322 ACH-000552 ACH-000222
#> K79584249    1.58747  0.7916403   1.493165  0.7191801    1.27088  0.8070354
#>           ACH-000260 ACH-000344 ACH-000223 ACH-000946 ACH-000632 ACH-000978
#> K79584249  0.9999901  0.8799442   1.392174  0.8838202   1.359727   1.690248
#>           ACH-000332 ACH-000368 ACH-000441 ACH-000098 ACH-000971 ACH-000926
#> K79584249   1.393825   1.414585  0.9646349          1  0.9029436         NA
#>           ACH-000019 ACH-000848 ACH-000481 ACH-000805 ACH-000847 ACH-000832
#> K79584249  0.8674562   1.025758         NA  0.7527184   1.213374  0.9242516
#>           ACH-000858 ACH-000544 ACH-000787 ACH-000209 ACH-000991 ACH-000331
#> K79584249   1.610237   1.169611         NA  0.8817027   1.700204   1.584192
#>           ACH-000684 ACH-000732 ACH-000896 ACH-000677 ACH-000784 ACH-000711
#> K79584249   1.189999   1.307413   1.429424  0.9466191   1.327982   1.226122
#>           ACH-000012 ACH-000231 ACH-000945 ACH-000662 ACH-000943 ACH-001016
#> K79584249  0.9148063   1.201035   1.440741   1.091496  0.8538652    1.27464
#>           ACH-000261 ACH-000164 ACH-000329 ACH-000545 ACH-000619 ACH-000153
#> K79584249   1.380602   1.292496  0.6978644   1.611288   1.295551  0.7248795
#>           ACH-000324 ACH-000898 ACH-000517 ACH-000681 ACH-000484 ACH-000108
#> K79584249  0.8021736  0.7619458   1.751868  0.7404114    1.83683   1.277799
#>           ACH-000997 ACH-000866 ACH-000819 ACH-000087 ACH-000758 ACH-000163
#> K79584249  0.8395315         NA   1.464362   1.109772   1.338519         NA
#>           ACH-000571 ACH-000391 ACH-000901 ACH-000836 ACH-000467 ACH-000671
#> K79584249  0.8521784   1.633504   2.125759   1.493631   1.095186         NA
#>           ACH-000890 ACH-000562 ACH-000748 ACH-000834 ACH-000565 ACH-000022
#> K79584249  0.8793557   1.204738  0.7347176    1.40108   1.403382   1.371945
#>           ACH-000374 ACH-000040 ACH-000437 ACH-000503 ACH-000403 ACH-000318
#> K79584249   1.229093   1.405242   1.196365  0.9339699   1.547007   1.512108
#>           ACH-000736 ACH-000235 ACH-000924 ACH-000296 ACH-000713 ACH-000273
#> K79584249   1.581684  0.8961282    1.23192   1.626885   1.260098   1.361667
#>           ACH-000361 ACH-000719 ACH-000407 ACH-000599 ACH-000250 ACH-000139
#> K79584249  0.7671614  0.9372747   1.542815   1.314784   1.146012         NA
#>           ACH-000037 ACH-000420 ACH-000486 ACH-000947 ACH-000476 ACH-000853
#> K79584249   1.457632   1.442256  0.7586783  0.8495005   1.345238         NA
#>           ACH-000479 ACH-000155 ACH-000188 ACH-000415 ACH-000824 ACH-000680
#> K79584249  0.8633985   1.144937         NA   1.241132  0.8833732   1.429094
#>           ACH-000618 ACH-000118 ACH-000614 ACH-000014 ACH-000637 ACH-000389
#> K79584249   1.363492   1.574755   0.705816  0.7819681   1.418728   1.198801
#>           ACH-000434 ACH-000756 ACH-000396 ACH-000265 ACH-000132 ACH-000855
#> K79584249         NA   1.070141   1.061491   1.257354   1.412575  0.8785177
#>           ACH-000906 ACH-000237 ACH-000393 ACH-000359 ACH-000936 ACH-000716
#> K79584249   1.392977  0.9373753   1.363674  0.8835599         NA   1.536446
#>           ACH-000988 ACH-000609 ACH-000504 ACH-000956 ACH-000652 ACH-000414
#> K79584249         NA  0.7259542   1.566865   1.194101  0.8305881   0.767717
#>           ACH-000472 ACH-000007 ACH-000665 ACH-000397 ACH-000252 ACH-000277
#> K79584249  0.9491594  0.7608343    1.23483   1.634524    1.26281  0.9056198
#>           ACH-001239 ACH-000537 ACH-000724 ACH-000425 ACH-000375 ACH-000753
#> K79584249  0.7883435   1.509522   1.239027   0.785242  0.7750369   1.596057
#>           ACH-000735 ACH-000404 ACH-000882 ACH-000090 ACH-000605 ACH-000458
#> K79584249   1.237571  0.8758252  0.8730809         NA   1.463539   1.685065
#>           ACH-000688 ACH-000826 ACH-000018 ACH-000721 ACH-000092 ACH-000648
#> K79584249   1.594765   1.654689   1.502769         NA   1.063298  0.8473668
#>           ACH-000950 ACH-000367 ACH-000589 ACH-000232 ACH-000099 ACH-000649
#> K79584249         NA  0.8328558  0.9119885   1.496923   1.164016   1.031298
#>           ACH-000086 ACH-000142 ACH-000264 ACH-000809 ACH-000060 ACH-000957
#> K79584249   1.401882    1.20376  0.9547244   1.403629   1.345977  0.7752448
#>           ACH-000762 ACH-000694 ACH-000974 ACH-000243 ACH-000843 ACH-000840
#> K79584249   1.260584   1.528847  0.7641074   1.633319    1.57371   1.621861
#>           ACH-000592 ACH-000741 ACH-000768 ACH-000667 ACH-000905 ACH-000822
#> K79584249  0.8973832  0.9743489         NA   1.265183   1.611321   1.059917
#>           ACH-000527 ACH-000279 ACH-000516 ACH-000524 ACH-000411 ACH-000903
#> K79584249  0.7083447         NA   2.318507   1.387331  0.8135546   1.015459
#>           ACH-000433 ACH-000278 ACH-000696 ACH-000747 ACH-001307 ACH-000417
#> K79584249   0.756598         NA   1.559077   1.230796   1.583292  0.9752596
#>           ACH-000532 ACH-000839 ACH-000323 ACH-000021 ACH-000734 ACH-000845
#> K79584249    1.58788   1.001262   1.237309    1.47002  0.9244075   1.337866
#>           ACH-000802 ACH-000573 ACH-000661 ACH-001190 ACH-000364 ACH-000783
#> K79584249   1.433299   1.184882  0.7264283         NA   1.369459   1.458596
#>           ACH-000976 ACH-000302 ACH-000305 ACH-000766 ACH-000343 ACH-000535
#> K79584249   1.376926   1.783196   1.247574   1.126581   1.848288   2.238138
#>           ACH-000774 ACH-000178 ACH-001306 ACH-000994 ACH-000804 ACH-000011
#> K79584249         NA   2.182579   1.352635   0.894688  0.7553819  0.8343507
#>           ACH-000141 ACH-000810 ACH-001145 ACH-000717 ACH-000738 ACH-000873
#> K79584249   1.689499   1.487505   1.702405         NA         NA   1.552645
#>           ACH-000921 ACH-000082 ACH-000488 ACH-000647 ACH-000965 ACH-000450
#> K79584249   1.308227   1.189405   1.533651   1.288683   1.311067   0.774769
#>           ACH-000835 ACH-000693 ACH-000811 ACH-000913 ACH-000879 ACH-000189
#> K79584249   1.569195    0.91233   1.412221         NA         NA   0.771582
#>           ACH-000454 ACH-000915 ACH-000480 ACH-000161 ACH-000395 ACH-000916
#> K79584249  0.8882011   1.358558   2.700147  0.8986136   1.626902  0.9127917
#>           ACH-000292 ACH-000137 ACH-000308 ACH-000445 ACH-000837 ACH-000048
#> K79584249   1.138106   1.175657         NA   1.661285  0.9714153   1.485206
#>           ACH-000463 ACH-000881 ACH-000147 ACH-000899 ACH-000133 ACH-000651
#> K79584249  0.8114989  0.8032725   1.383445  0.8428404         NA   1.151041
#>           ACH-000563 ACH-000316 ACH-000884 ACH-000962 ACH-000473 ACH-000192
#> K79584249   1.556536   1.228044   1.180914  0.9114115  0.8048297   1.350899
#>           ACH-000054 ACH-001318 ACH-000601 ACH-000966 ACH-000630 ACH-000657
#> K79584249    1.25338     1.1408         NA  0.8539538   1.134533  0.8010326
#>           ACH-000624 ACH-000319 ACH-000280 ACH-000493 ACH-000042 ACH-000221
#> K79584249    1.19594   1.667687  0.7415559    1.18769    1.22229  0.8671164
#>           ACH-000477 ACH-000356 ACH-000244 ACH-000255 ACH-000352 ACH-000416
#> K79584249  0.9121935  0.7252961  0.7493366   1.438858         NA  0.9136551
#>           ACH-000862 ACH-000401 ACH-000593 ACH-000182 ACH-000159 ACH-000191
#> K79584249  0.8479342   1.154279   1.697116   1.580469  0.8887433   1.219069
#>           ACH-000841 ACH-000622 ACH-000452 ACH-000860 ACH-000259 ACH-000720
#> K79584249   1.495352   1.203903         NA         NA   1.728776   1.661213
#>           ACH-000558 ACH-000335 ACH-000207 ACH-000764 ACH-000846 ACH-000929
#> K79584249  0.7764848  0.7505006   1.444412  0.9821154  0.7960934  0.7523114
#>           ACH-000948 ACH-000311 ACH-000390 ACH-000468 ACH-000456 ACH-000496
#> K79584249  0.7806966  0.8249172   1.457592         NA  0.9076768         NA
#>           ACH-000878 ACH-000427 ACH-000939 ACH-000919 ACH-000863 ACH-000827
#> K79584249   1.114668   1.541045    1.10952   0.748097  0.7231782  0.8169875
#>           ACH-000961 ACH-000778 ACH-000958 ACH-000228 ACH-000266 ACH-000174
#> K79584249   1.078206  0.9513833   1.533469   1.262065    1.67992   1.060525
#>           ACH-000620 ACH-000211 ACH-000682 ACH-000212 ACH-000776 ACH-000521
#> K79584249   1.194411   1.121824  0.7914879   1.209029  0.7638425    1.31729
#>           ACH-000833 ACH-000274 ACH-000849 ACH-000219 ACH-000495 ACH-000911
#> K79584249         NA   1.324501   1.351344  0.8228859  0.6860265  0.9476985
#>           ACH-000013 ACH-000777 ACH-000312 ACH-000869 ACH-000023 ACH-000281
#> K79584249         NA  0.9310163   1.254454   1.119876  0.8850418  0.9683495
#>           ACH-000985 ACH-000444 ACH-000307 ACH-000595 ACH-000771 ACH-000500
#> K79584249   1.722887  0.8761214  0.8613128   1.303203   1.400049  0.9418978
#>           ACH-000663 ACH-000970 ACH-000471 ACH-000886 ACH-000888 ACH-000030
#> K79584249  0.7000714   1.555741   1.572776  0.8266071   1.445136  0.8714958
#>           ACH-000549 ACH-000775 ACH-000510 ACH-000959 ACH-000169 ACH-000796
#> K79584249   1.624921   1.436709   1.168432   1.032473   1.418416   1.404631
#>           ACH-000469 ACH-000097 ACH-000977 ACH-000579 ACH-000502 ACH-000408
#> K79584249   1.397419  0.7118744  0.8023168  0.9129187   1.522379    1.34192
#>           ACH-000788 ACH-000701 ACH-000542 ACH-000015 ACH-000288 ACH-000791
#> K79584249  0.9445553   1.312065  0.7547401         NA   1.421581   1.618649
#>           ACH-001075 ACH-000885 ACH-000900 ACH-000666 ACH-000217 ACH-000996
#> K79584249  0.8229238  0.7854742    1.26622         NA   1.342844   1.258788
#>           ACH-000320 ACH-000505 ACH-000781 ACH-000968 ACH-000973 ACH-001128
#> K79584249         NA   1.311121    1.84854  0.9124596   1.261764         NA
#>           ACH-000052 ACH-000561
#> K79584249   1.357673  0.8654508
out <- DMB(DOI,GOI,Pred.d.f.f[3,],d.mt,DRS,KO.GES,plot=TRUE)
print (out)

## Interpretation: The graph shows CGM097 is likely targeting both the mutant 
## form (R=0.81, P val <0.01) and the wild type form (R=0.49, P >0.01) of 
## the MDM2 gene.
## For dabrafenib, both assays suggest that BRAF is mutated target forms, we will choose one for visualization.
DOI ="dabrafenib"
GOI = "BRAF"
# because this has two assays in the drug response score matrix, we will visualize one of them.
# first check identity.
identical ( Pred.d.f$DrugID, row.names(sec.prism.f))
#> [1] TRUE
## we will choose the row 5.
DRS=as.data.frame(sec.prism.f[5,])
DRS <- t(DRS)
row.names(DRS) <- row.names(sec.prism.f)[5]
out <- DMB(DOI,GOI,Pred.d.f[5,],d.mt,DRS,KO.GES,plot=TRUE)
print (out)

## Interpretation: The graph shows dabrafenib is likely targeting the mutant 
## form (R=0.66, P val <0.01) rather than the wild type form (R=-0.1, P >0.01) 
## of BRAF gene.

3.3 Predicting secondary target(s) that mediate its response when the primary target is not expressed

As an example, let’s look at the drug ‘ibrutinib’ from the Prediction object. Ibrutinib is a well-known covalent target of BTK. Please note that for this drug, there are two assays. We selected only one of them for this example.

## This drug has two assays.
# The index is 14 in the order of the interesting drugs.
identical (Pred.d$DrugID, row.names(sec.prism.f))
#> [1] TRUE
DRS=as.data.frame(sec.prism.f[14,])
DRS <- t(DRS)
row.names(DRS) <- row.names(sec.prism.f)[14]
####
DOI="ibrutinib"
GOI="BTK"
out <- DTR (DOI,GOI,Pred.d[14,],d.expr,DRS,KO.GES,CutOff= 2)
print(out)

We find above that Ibrutinib’s response is only correlated with the BTK gene in cell lines where BTK is expressed and not in cell lines where BTK is not expressed. Next, let’s look at the correlation between the BTK gene KO and this drug response in no BTK cell lines to predict the secondary targets for this drug.


sim.LowExp.Strength=sapply(sim.LowExp, function(x) x[,2])
dim(sim.LowExp.Strength)
#> [1] 487   8
sim.LowExp.Pval=sapply(sim.LowExp, function(x) x[,1])
head(sim.LowExp.Pval)
#>        K09951645 K09951645 K38527262 K38527262  K51313569   K51313569
#> ABL2   0.5203398 0.6532451 0.4546755 0.6748665 0.70309015 0.784197282
#> ACAT2  0.6228084 0.2572060 0.4111495 0.7786084 0.08316226 0.310792296
#> ACCSL  0.0314582 0.2940887 0.7352730 0.1760980 0.02018384 0.140217499
#> ACTA1  0.9826104 0.0947502 0.7332240 0.1568970 0.33076606 0.002059387
#> ACTC1  0.2011062 0.9738262 0.5093903 0.3664459 0.46104791 0.117628092
#> ADAM21 0.9809521 0.2507671 0.5503414 0.6394241 0.61500343 0.168134195
#>          K70301465  K70301465
#> ABL2   0.001592559 0.04049965
#> ACAT2  0.788591872 0.54284370
#> ACCSL  0.188292668 0.08214740
#> ACTA1  0.572693296 0.09773104
#> ACTC1  0.762020918 0.76487976
#> ADAM21 0.469027451 0.26970046
## Let's take a look at ibrutinib
par(mar=c(4,4,5,2), xpd=TRUE, mfrow=c(1,2));
plotSim(sim.LowExp.Pval[,8],sim.LowExp.Strength[,8],colorRampPalette(c("lightblue",'darkblue')), plot=TRUE)

4 Part III: Conclusion

We observe below that Ibrutinib response is strongly correlated with EGFR knockout (KO) in cell lines where Bruton tyrosine kinase (BTK) is not expressed. However, this correlation is not observed in cell lines where BTK is expressed. Among the top predicted genes, there are more layers of evidence that Ibrutinib binds physically to EGFR. Thus, let’s focus further on EGFR.

DOI="ibrutinib"
GOI="EGFR"
out <- DTR (DOI,GOI,Pred.d[14,],d.expr,DRS,KO.GES,CutOff= 2)
print (out)

5 Session info

sessionInfo()
#> R Under development (unstable) (2024-03-18 r86148)
#> Platform: x86_64-pc-linux-gnu
#> Running under: Ubuntu 22.04.4 LTS
#> 
#> Matrix products: default
#> BLAS:   /home/biocbuild/bbs-3.19-bioc/R/lib/libRblas.so 
#> LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.10.0
#> 
#> locale:
#>  [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
#>  [3] LC_TIME=en_GB              LC_COLLATE=C              
#>  [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
#>  [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                 
#>  [9] LC_ADDRESS=C               LC_TELEPHONE=C            
#> [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       
#> 
#> time zone: America/New_York
#> tzcode source: system (glibc)
#> 
#> attached base packages:
#> [1] stats     graphics  grDevices utils     datasets  methods   base     
#> 
#> other attached packages:
#> [1] DeepTarget_0.99.16 BiocStyle_2.31.0  
#> 
#> loaded via a namespace (and not attached):
#>   [1] DBI_1.2.2               pROC_1.18.5             httr2_1.0.0            
#>   [4] rlang_1.1.3             magrittr_2.0.3          compiler_4.4.0         
#>   [7] RSQLite_2.3.5           mgcv_1.9-1              png_0.1-8              
#>  [10] vctrs_0.6.5             stringr_1.5.1           pkgconfig_2.0.3        
#>  [13] crayon_1.5.2            fastmap_1.1.1           magick_2.8.3           
#>  [16] backports_1.4.1         dbplyr_2.5.0            XVector_0.43.1         
#>  [19] labeling_0.4.3          utf8_1.2.4              rmarkdown_2.26         
#>  [22] tzdb_0.4.0              depmap_1.17.5           purrr_1.0.2            
#>  [25] bit_4.0.5               xfun_0.43               zlibbioc_1.49.3        
#>  [28] cachem_1.0.8            GenomeInfoDb_1.39.9     jsonlite_1.8.8         
#>  [31] blob_1.2.4              highr_0.10              BiocParallel_1.37.1    
#>  [34] broom_1.0.5             parallel_4.4.0          R6_2.5.1               
#>  [37] bslib_0.6.2             stringi_1.8.3           car_3.1-2              
#>  [40] jquerylib_0.1.4         Rcpp_1.0.12             bookdown_0.38          
#>  [43] knitr_1.45              readr_2.1.5             IRanges_2.37.1         
#>  [46] splines_4.4.0           Matrix_1.7-0            tidyselect_1.2.1       
#>  [49] abind_1.4-5             yaml_2.3.8              codetools_0.2-19       
#>  [52] curl_5.2.1              lattice_0.22-6          tibble_3.2.1           
#>  [55] plyr_1.8.9              Biobase_2.63.0          withr_3.0.0            
#>  [58] KEGGREST_1.43.0         evaluate_0.23           BiocFileCache_2.11.2   
#>  [61] ExperimentHub_2.11.1    Biostrings_2.71.5       pillar_1.9.0           
#>  [64] BiocManager_1.30.22     ggpubr_0.6.0            filelock_1.0.3         
#>  [67] carData_3.0-5           stats4_4.4.0            generics_0.1.3         
#>  [70] BiocVersion_3.19.1      S4Vectors_0.41.5        hms_1.1.3              
#>  [73] ggplot2_3.5.0           munsell_0.5.0           scales_1.3.0           
#>  [76] glue_1.7.0              tools_4.4.0             AnnotationHub_3.11.3   
#>  [79] data.table_1.15.2       fgsea_1.29.0            ggsignif_0.6.4         
#>  [82] fastmatch_1.1-4         cowplot_1.1.3           grid_4.4.0             
#>  [85] tidyr_1.3.1             tidyverse_2.0.0         AnnotationDbi_1.65.2   
#>  [88] colorspace_2.1-0        nlme_3.1-164            GenomeInfoDbData_1.2.12
#>  [91] cli_3.6.2               rappdirs_0.3.3          fansi_1.0.6            
#>  [94] dplyr_1.1.4             gtable_0.3.4            rstatix_0.7.2          
#>  [97] sass_0.4.9              digest_0.6.35           BiocGenerics_0.49.1    
#> [100] farver_2.1.1            memoise_2.0.1           htmltools_0.5.8        
#> [103] lifecycle_1.0.4         httr_1.4.7              bit64_4.0.5