## ----style, echo=FALSE, results='asis'----------------------------------------
BiocStyle::markdown()

## ----setup, echo=FALSE, message=FALSE-----------------------------------------
library(CardinalWorkflows)
setCardinalBPPARAM(SerialParam())
setCardinalVerbose(FALSE)
RNGkind("L'Ecuyer-CMRG")

## -----------------------------------------------------------------------------
library(Cardinal)

## ----load-rcc-----------------------------------------------------------------
data(rcc, package="CardinalWorkflows")
rcc <- as(rcc, "MSImagingExperiment")

## ----show-rcc-----------------------------------------------------------------
rcc

## ----normalize-rcc------------------------------------------------------------
rcc <- rcc %>%
  subsetPixels(!is.na(diagnosis)) %>%
  normalize(method="tic") %>%
  process()
rcc

## ----rcc-mean-----------------------------------------------------------------
rcc_mean <- summarizeFeatures(rcc, "mean")

## ----rcc-peak-process---------------------------------------------------------
rcc_ref <- rcc_mean %>%
  peakPick(SNR=3) %>%
  peakAlign(ref="mean",
            tolerance=0.5,
            units="mz") %>%
  peakFilter() %>%
  process()

## ----rcc-peak-bin-------------------------------------------------------------
rcc_peaks <- rcc %>%
  peakBin(ref=mz(rcc_ref),
          tolerance=0.5,
          units="mz") %>%
  process()

rcc_peaks

## ----mz-810, fig.height=10----------------------------------------------------
image(rcc_peaks, mz=810, layout=c(4,2),
      contrast.enhance="suppress", normalize.image="linear")

## ----rcc-pca------------------------------------------------------------------
rcc_pca <- PCA(rcc_peaks, ncomp=2)

## ----pca-image, fig.height=10-------------------------------------------------
image(rcc_pca, layout=c(4,2), normalize.image="linear")

## ----pca-scores---------------------------------------------------------------
pc_scores <- DataFrame(resultData(rcc_pca, 1, "scores"))

## ----pca-scoreplot-1----------------------------------------------------------
plot(pc_scores, PC1 ~ PC2, groups=rcc$diagnosis)

## ----pca-scoreplot-2----------------------------------------------------------
plot(pc_scores, PC1 ~ PC2, groups=run(rcc))

## ----rcc-cv, message=FALSE----------------------------------------------------
rcc_ssc_cv <- crossValidate(rcc, rcc$diagnosis,
              .fun="spatialShrunkenCentroids",
              r=1, s=c(0,3,6,9,12,15),
              .fold=run(rcc), .process=TRUE,
              .processControl=list(SNR=3,
                                   tolerance=0.5,
                                   units="mz"))

summary(rcc_ssc_cv)

## ----rcc-cv-plot--------------------------------------------------------------
plot(summary(rcc_ssc_cv), Accuracy ~ s, type='b')
abline(v=9, lty=2, col="red")

## ----rcc-ssc------------------------------------------------------------------
rcc_ssc <- spatialShrunkenCentroids(rcc_peaks, rcc$diagnosis, r=1, s=9)

summary(rcc_ssc)

## ----rcc-ssc-image, fig.height=10---------------------------------------------
image(rcc_ssc, layout=c(4,2))

## ----rcc-ssc-mean-------------------------------------------------------------
setup.layout(c(2,1))
plot(rcc_ssc, column=1, col=discrete.colors(2)[1],
     lwd=2, layout=NULL)
plot(rcc_ssc, column=2, col=discrete.colors(2)[2],
     lwd=2, layout=NULL)

## ----rcc-statistic------------------------------------------------------------
plot(rcc_ssc, values="statistic", lwd=2)

## ----top-cancer---------------------------------------------------------------
topFeatures(rcc_ssc, class=="cancer")

## ----mz-885, fig.height=10----------------------------------------------------
image(rcc_peaks, mz=885, contrast.enhance="suppress", layout=c(4,2))

## ----top-normal---------------------------------------------------------------
topFeatures(rcc_ssc, class=="normal")

## ----mz-215, fig.height=10----------------------------------------------------
image(rcc_peaks, mz=215, contrast.enhance="suppress", layout=c(4,2))

## ----session-info-------------------------------------------------------------
sessionInfo()