### R code from vignette source 'PharmacoGx.Rnw'
### Encoding: UTF-8

###################################################
### code chunk number 1: setup (eval = FALSE)
###################################################
## options(keep.source=TRUE)


###################################################
### code chunk number 2: install-pkg (eval = FALSE)
###################################################
## if (!requireNamespace("BiocManager", quietly=TRUE))
##     install.packages("BiocManager")
## BiocManager::install('PharmacoGx')


###################################################
### code chunk number 3: loadlib (eval = FALSE)
###################################################
## library(PharmacoGx)


###################################################
### code chunk number 4: download-example (eval = FALSE)
###################################################
## ## Example
## availablePSets()
## GDSC <- downloadPSet("GDSC") 


###################################################
### code chunk number 5: download-sig (eval = FALSE)
###################################################
## ## Example
## CMAP.sigs <- downloadPertSig("CMAP")


###################################################
### code chunk number 6: inconsistencies (eval = FALSE)
###################################################
##   library(Biobase)
##   library(PharmacoGx)
##   data("GDSCsmall")
##   data("CCLEsmall")
##   commonGenes <- intersect(fNames(GDSCsmall, "rna"),
##                            fNames(CCLEsmall,"rna"))
##   common <- intersectPSet(list('CCLE'=CCLEsmall,
##                                'GDSC'=GDSCsmall),
##                           intersectOn=c("cell.lines", "drugs"), strictIntersect=TRUE)
## 
##   
##   GDSC.auc <- summarizeSensitivityProfiles(
##                 pSet=common$GDSC,
##                 sensitivity.measure='auc_published', 
##                 summary.stat="median",
##                 verbose=FALSE)
##   CCLE.auc <- summarizeSensitivityProfiles(
##                 pSet=common$CCLE,
##                 sensitivity.measure='auc_published', 
##                 summary.stat="median",
##                 verbose=FALSE)
##   
##   GDSC.ic50 <- summarizeSensitivityProfiles(
##                 pSet=common$GDSC, 
##                 sensitivity.measure='ic50_published', 
##                 summary.stat="median",
##                 verbose=FALSE)
##   CCLE.ic50 <- summarizeSensitivityProfiles(
##                 pSet=common$CCLE, 
##                 sensitivity.measure='ic50_published', 
##                 summary.stat="median",
##                 verbose=FALSE)
##   
##   GDSCexpression <- summarizeMolecularProfiles(common$GDSC, 
##                                         cellNames(common$GDSC),
##                                         mDataType="rna",
##                                         features=commonGenes,
##                                         verbose=FALSE)
##   CCLEexpression <- summarizeMolecularProfiles(common$CCLE, 
##                                          cellNames(common$CCLE),
##                                          mDataType="rna",
##                                          features=commonGenes,
##                                          verbose=FALSE)
##   gg <- fNames(common[[1]], 'rna')
##   cc <- cellNames(common[[1]])
##   
##   ge.cor <- sapply(cc, function (x, d1, d2) {
##     return (stats::cor(d1[ , x], d2[ , x], method="spearman",
##                 use="pairwise.complete.obs"))
##   }, d1=exprs(GDSCexpression), d2=exprs(CCLEexpression))
##   ic50.cor <- sapply(cc, function (x, d1, d2) {
##     return (stats::cor(d1[, x], d2[ , x], method="spearman",
##                 use="pairwise.complete.obs"))
##   }, d1=GDSC.ic50, d2=CCLE.ic50)
##   auc.cor <- sapply(cc, function (x, d1, d2) {
##     return (stats::cor(d1[ , x], d2[ , x], method="spearman",
##                 use="pairwise.complete.obs"))
##   }, d1=GDSC.auc, d2=CCLE.auc)
##   
##   w1 <- stats::wilcox.test(x=ge.cor, y=auc.cor,
##                            conf.int=TRUE, exact=FALSE)
##   w2 <- stats::wilcox.test(x=ge.cor, y=ic50.cor,
##                            conf.int=TRUE, exact=FALSE)
##   yylim <- c(-1, 1)
##   ss <- sprintf("GE vs. AUC = %.1E\nGE vs. IC50 = %.1E",
##                 w1$p.value, w2$p.value)
##   boxplot(list("GE"=ge.cor,
##                "AUC"=auc.cor,
##                "IC50"=ic50.cor),
##           main="Concordance between cell lines",
##           ylab=expression(R[s]),
##           sub=ss,
##           ylim=yylim,
##           col="lightgrey",
##           pch=20,
##           border="black")
## 


###################################################
### code chunk number 7: fig2
###################################################

  library(Biobase)
  library(PharmacoGx)
  data("GDSCsmall")
  data("CCLEsmall")
  commonGenes <- intersect(fNames(GDSCsmall, "rna"),
                           fNames(CCLEsmall,"rna"))
  common <- intersectPSet(list('CCLE'=CCLEsmall,
                               'GDSC'=GDSCsmall),
                          intersectOn=c("cell.lines", "drugs"), strictIntersect=TRUE)

  
  GDSC.auc <- summarizeSensitivityProfiles(
                pSet=common$GDSC,
                sensitivity.measure='auc_published', 
                summary.stat="median",
                verbose=FALSE)
  CCLE.auc <- summarizeSensitivityProfiles(
                pSet=common$CCLE,
                sensitivity.measure='auc_published', 
                summary.stat="median",
                verbose=FALSE)
  
  GDSC.ic50 <- summarizeSensitivityProfiles(
                pSet=common$GDSC, 
                sensitivity.measure='ic50_published', 
                summary.stat="median",
                verbose=FALSE)
  CCLE.ic50 <- summarizeSensitivityProfiles(
                pSet=common$CCLE, 
                sensitivity.measure='ic50_published', 
                summary.stat="median",
                verbose=FALSE)
  
  GDSCexpression <- summarizeMolecularProfiles(common$GDSC, 
                                        cellNames(common$GDSC),
                                        mDataType="rna",
                                        features=commonGenes,
                                        verbose=FALSE)
  CCLEexpression <- summarizeMolecularProfiles(common$CCLE, 
                                         cellNames(common$CCLE),
                                         mDataType="rna",
                                         features=commonGenes,
                                         verbose=FALSE)
  gg <- fNames(common[[1]], 'rna')
  cc <- cellNames(common[[1]])
  
  ge.cor <- sapply(cc, function (x, d1, d2) {
    return (stats::cor(d1[ , x], d2[ , x], method="spearman",
                use="pairwise.complete.obs"))
  }, d1=exprs(GDSCexpression), d2=exprs(CCLEexpression))
  ic50.cor <- sapply(cc, function (x, d1, d2) {
    return (stats::cor(d1[, x], d2[ , x], method="spearman",
                use="pairwise.complete.obs"))
  }, d1=GDSC.ic50, d2=CCLE.ic50)
  auc.cor <- sapply(cc, function (x, d1, d2) {
    return (stats::cor(d1[ , x], d2[ , x], method="spearman",
                use="pairwise.complete.obs"))
  }, d1=GDSC.auc, d2=CCLE.auc)
  
  w1 <- stats::wilcox.test(x=ge.cor, y=auc.cor,
                           conf.int=TRUE, exact=FALSE)
  w2 <- stats::wilcox.test(x=ge.cor, y=ic50.cor,
                           conf.int=TRUE, exact=FALSE)
  yylim <- c(-1, 1)
  ss <- sprintf("GE vs. AUC = %.1E\nGE vs. IC50 = %.1E",
                w1$p.value, w2$p.value)
  boxplot(list("GE"=ge.cor,
               "AUC"=auc.cor,
               "IC50"=ic50.cor),
          main="Concordance between cell lines",
          ylab=expression(R[s]),
          sub=ss,
          ylim=yylim,
          col="lightgrey",
          pch=20,
          border="black")

    



###################################################
### code chunk number 8: load-cmap
###################################################
  library(PharmacoGx)
  require(xtable)
  data(CMAPsmall)
  drug.perturbation <- drugPerturbationSig(CMAPsmall, 
                                           mDataType="rna",
                                           verbose=FALSE)
  data(HDAC_genes)
  
  res <- apply(drug.perturbation[,,c("tstat", "fdr")],
               2, function(x, HDAC){ 
	    return(connectivityScore(x=x, 
	                             y=HDAC[,2,drop=FALSE], 
                               method="fgsea", nperm=100))
	}, HDAC=HDAC_genes)
  
  rownames(res) <- c("Connectivity", "P Value")
  res <- t(res)
  res <- res[order(res[,1], decreasing=TRUE),]
  xtable(res, 
    caption='Connectivity Score results for HDAC inhibitor gene signature.')


###################################################
### code chunk number 9: biomarkers
###################################################

  data(CCLEsmall)
  features <- fNames(CCLEsmall, "rna")[
                          which(featureInfo(CCLEsmall,
                                            "rna")$Symbol == "NQO1")]
  sig.rna <- drugSensitivitySig(pSet=CCLEsmall, 
                            mDataType="rna", 
                            drugs=c("17-AAG"), 
                            features=features, 
                            sensitivity.measure="auc_published", 
                            molecular.summary.stat="median", 
                            sensitivity.summary.stat="median",
                            verbose=FALSE)
  sig.mut <- drugSensitivitySig(pSet=CCLEsmall, 
                            mDataType="mutation", 
                            drugs=c("PD-0325901"), 
                            features="BRAF", 
                            sensitivity.measure="auc_published", 
                            molecular.summary.stat="and", 
                            sensitivity.summary.stat="median",
                            verbose=FALSE)
  sig <- rbind(sig.rna, sig.mut)
  rownames(sig) <- c("17-AAG + NQO1","PD-0325901 + BRAF")
  colnames(sig) <- dimnames(sig.mut)[[3]]
  xtable(sig, caption='P Value of Gene-Drug Association')


###################################################
### code chunk number 10: sessionInfo
###################################################
toLatex(sessionInfo())


