## ----setup, include = FALSE---------------------------------------------------
knitr::opts_chunk$set(
    collapse = TRUE,
    comment = "#>",
    fig.width = 7,
    fig.height = 5
)

## ----simulateData-------------------------------------------------------------
# BiocManager::install("normScore")
library(normScore)

simData <- simulateData(
    nProteins = 500,
    nPerGroup = 4,
    sampleShiftSd = 0.12,
    sampleShiftCap = 1,
    sampleSdStrength = 1.2,
    sampleSdRho = 0.3,
    rhoWithin = 0.6,
    rhoBetween = 0.3,
    loadingSd = 0.45,
    sigmaHi = 0.03,
    sigmaLo = 0.4,
    gammaSigma = 3.8,
    kMnar = 1.6,
    addMissing = FALSE,
    seed = 123
)


## ----justSimDataStr-----------------------------------------------------------
names(simData)

## ----simMetadata--------------------------------------------------------------
head(simData$metadata)

## ----normalization------------------------------------------------------------
# Median normalization
MedianMat <- NormalyzerDE::medianNormalization(simData$rawData)
colnames(MedianMat) <- colnames(simData$rawData)
rownames(MedianMat) <- rownames(simData$rawData)

# Quantile normalization
QuantileMat <- limma::normalizeQuantiles(
    simData$logData
)
colnames(QuantileMat) <- colnames(simData$logData)
rownames(QuantileMat) <- rownames(simData$logData)


# CyclicLoess normalization
CyclicNorm <- limma::normalizeCyclicLoess(
    simData$logData, method="fast",  adaptive.span=FALSE
)


# All together
normalizedDataList <- list(
    Log = simData$logData,
    Median = MedianMat,
    Quantile = QuantileMat, 
    CyclicLoess = CyclicNorm
)

names(normalizedDataList)

## ----normScoreUsage-----------------------------------------------------------
result <- normScore(
    normalizedDataList = normalizedDataList,
    groupData = simData$metadata,
    rawData = simData$rawData,
    returnDetails = TRUE,
    nBoot = 150
)

## ----finalNormScoreRank-------------------------------------------------------
result$finalRanking

## ----detailedRanking----------------------------------------------------------
result$detailRanking

## ----strSimulatedData---------------------------------------------------------
result$bootstrapScore

## ----plotBootstrapInterval----------------------------------------------------
plotBootstrapNormScore(result)

## ----getDiagnosticPlots-------------------------------------------------------
allPlots <- plotNormScoreDiagnostics(
    normalizedDataList = normalizedDataList,
    groupData = simData$metadata,
    rawData = simData$rawData
)

names(allPlots)

## ----item0, fig.height=10, fig.width=8----------------------------------------
allPlots[["I0_SystematicBiasPenalty"]]

## ----item1, fig.height=6, fig.width=6-----------------------------------------
allPlots[["I1_PCV"]]

## ----item2, fig.height=6, fig.width=6-----------------------------------------
allPlots[["I2_WithinGroupCorrelation"]]

## ----item3, fig.height=10, fig.width=8----------------------------------------
allPlots[["I3_MAplot"]]

## ----item4, fig.height=10, fig.width=8----------------------------------------
allPlots[["I4_MeanSD"]]

## ----item5, fig.height=10, fig.width=8----------------------------------------
allPlots[["I5_RLE"]]

## ----item6, fig.height=10, fig.width=8----------------------------------------
allPlots[["I6_TotalIntensity"]]

## ----requieredPackages, message=FALSE-----------------------------------------
# BiocManager::install("normScore")
library(normScore)

# BiocManager::install("SummarizedExperiment")
library(SummarizedExperiment)

# BiocManager::install("S4Vectors")
library(S4Vectors)

# BiocManager::install("NormalyzerDE")
library(NormalyzerDE)

## ----example-data-------------------------------------------------------------
simData <- simulateData(
    nProteins = 500,
    nPerGroup = 4,
    sampleShiftSd = 0.12,
    sampleShiftCap = 1,
    sampleSdStrength = 1.2,
    sampleSdRho = 0.3,
    rhoWithin = 0.6,
    rhoBetween = 0.3,
    loadingSd = 0.45,
    sigmaHi = 0.03,
    sigmaLo = 0.4,
    gammaSigma = 3.8,
    kMnar = 1.6,
    addMissing = FALSE,
    seed = 456
)

rawData <- simData$rawData

## ----se-object----------------------------------------------------------------
sampleData <- S4Vectors::DataFrame(
    sample = simData$metadata$Samples,
    group = simData$metadata$Groups
)

se <- SummarizedExperiment::SummarizedExperiment(
    assays = list(rawData = rawData),
    colData = sampleData,
    metadata = list(
        sample = "sample",
        group = "group")
)

## ----normalize-data-----------------------------------------------------------
normalyzerObject <- NormalyzerDE::getVerifiedNormalyzerObject(
    jobName = "normScore_example",
    summarizedExp = se,
    noLogTransform = FALSE
)

normalyzerResults <- NormalyzerDE::normMethods(
    normalyzerObject,
    normalizeRetentionTime = FALSE
)

## ----prepare-normalized-list--------------------------------------------------
normalizedDataList <- methods::slot(
    normalyzerResults,
    "normalizations"
)

## ----adjust-rownames----------------------------------------------------------
normalizedDataList <- lapply(
    normalizedDataList,
    function(x) {
        rownames(x) <- rownames(rawData)
        x
    }
)

## ----prepare-group-data-------------------------------------------------------
groupData <- data.frame(
    Samples = sampleData$sample,
    Groups = sampleData$group
)

stopifnot(
    identical(groupData$Samples, colnames(rawData)),
    all(vapply(
        normalizedDataList,
        function(x) identical(colnames(x), groupData$Samples),
        logical(1)
    ))
)

groupData

## ----run-normscore------------------------------------------------------------
normScoreResults <- normScore(
    normalizedDataList = normalizedDataList,
    groupData = groupData,
    rawData = rawData
)

## ----inspect-results----------------------------------------------------------
names(normScoreResults)

normScoreResults$finalRanking

## ----store-results------------------------------------------------------------
metadata(se)$normScore <- normScoreResults

## ----recover-results----------------------------------------------------------
storedResults <- metadata(se)$normScore
names(storedResults)

## ----store-summary------------------------------------------------------------
metadata(se)$normalizationRanking <- normScoreResults$score

## ----selected-assay-----------------------------------------------------------
assay(se, "Selected") <- normalizedDataList$Quantile

assayNames(se)

## ----downstream-example-------------------------------------------------------
selectedData <- assay(se, "Selected")

dim(selectedData)

## ----compact-workflow, eval=FALSE---------------------------------------------
# assayNames(se)
# colnames(se)
# colData(se)
# 
# rawData <- assay(se, "Unnormalized")
# 
# normalizationMethods <- c("Mean", "Median", "Quantile")
# 
# normalizedDataList <- lapply(
#     normalizationMethods,
#     function(method) assay(se, method)
# )
# names(normalizedDataList) <- normalizationMethods
# 
# groupData <- data.frame(
#     Samples = colnames(se),
#     Groups = as.character(colData(se)$group)
# )
# 
# normScoreResults <- normScore(
#     normalizedDataList = normalizedDataList,
#     groupData = groupData,
#     rawData = rawData
# )
# 
# metadata(se)$normScore <- normScoreResults

## ----versions-----------------------------------------------------------------
sessionInfo()

