## ----chunk_settings, eval = T, echo = F---------------------------------------
library(knitr)
library(ggplot2)
library(recountmethylation)
knitr::opts_chunk$set(eval = FALSE, echo = TRUE, 
                      warning = FALSE, message = FALSE)

## ----setup, eval = T, echo = F------------------------------------------------
# get the system load paths
dpath <- system.file(package = "recountmethylation", 
                     "extdata", "pwrewas_files")
# load example summary statistics
dfpwr <- get(load(file.path(dpath, "dfpwr_test_pwrewas.rda")))
lpwr <- get(load(file.path(dpath, "lpwr-results_pwrewas-example.rda")))

## -----------------------------------------------------------------------------
# revised_function_url <- paste0("https://github.com/metamaden/pwrEWAS/", "blob/master/inst/revised_functions/pwrEWAS_revised.R?raw=TRUE")
# devtools::source_url(revised_function_url)

## -----------------------------------------------------------------------------
# library(minfiData)
# data("MsetEx") # load MethylSet
# ms <- MsetEx
# bval <- getBeta(ms) # get DNAm fractions
# # get the summary data frame
# dfpwr <- data.frame(mu = rowMeans(bval, na.rm = T),
#                     var = rowVars(bval, na.rm = T))

## ----eval = T, message = T----------------------------------------------------
head(dfpwr)

## -----------------------------------------------------------------------------
# ttype <- dfpwr               # tissueType
# mintss <- 10                 # minTotSampleSize
# maxtss <- 1000               # maxTotSampleSize
# sstep <- 100                 # SampleSizeSteps
# tdeltav <- c(0.05, 0.1, 0.2) # targetDelta
# dmethod <- "limma"           # DMmethod
# fdr <- 0.05                  # FDRcritVal
# nsim <- 20                   # sims
# j <- 1000                    # J
# ndmp <- 50                   # targetDmCpGs
# detlim <- 0.01               # detectionLimit
# maxctau <- 100               # maxCnt.tau
# ncntper <- 0.5               # NcntPer

## -----------------------------------------------------------------------------
# set.seed(0)
# lpwr.c2 <- pwrEWAS_itable(core = 2,
#                           tissueType = ttype, minTotSampleSize = mintss,
#                           maxTotSampleSize = maxtss, SampleSizeSteps = sstep,
#                           NcntPer = ncntper, targetDelta = tdeltav, J = j,
#                           targetDmCpGs = ndmp, detectionLimit = detlim,
#                           DMmethod = dmethod, FDRcritVal = fdr,
#                           sims = nsim, maxCnt.tau = maxctau)
# # [2022-02-17 13:44:51] Finding tau...done [2022-02-17 13:45:06]
# # [1] "The following taus were chosen: 0.013671875, 0.02734375, 0.0546875"
# # [2022-02-17 13:45:06] Running simulation
# # [2022-02-17 13:45:06] Running simulation ... done [2022-02-17 13:48:23]

## ----eval = T-----------------------------------------------------------------
lpwr <- lpwr.c1           # get results from an above example
mp <- lpwr[["meanPower"]] # get the mean power table

## -----------------------------------------------------------------------------
# dim(mp) # get the dimensions of mean power table

## -----------------------------------------------------------------------------
# head(mp) # get first rows of mean power table

## ----eval = T-----------------------------------------------------------------
pa <- lpwr$powerArray # get power array

## ----eval = T-----------------------------------------------------------------
length(pa) # get length of power array

## ----eval = T-----------------------------------------------------------------
mean(pa[1:20]) == mp[1,1] # compare means, power array vs. mean power table

## ----eval = T-----------------------------------------------------------------
# extract power values from the array of matrices
parr <- pa
m1 <- data.frame(power = parr[1:200])   # first delta power values
m2 <- data.frame(power = parr[201:400]) # second delta power values
m3 <- data.frame(power = parr[401:600]) # third delta power values
# assign total samples to power values
m1$total.samples <- m2$total.samples <- 
  m3$total.samples <- rep(seq(10, 910, 100), each = 20)
# add delta labels
m1$`Delta\nDNAm` <- rep("0.05", 200)
m2$`Delta\nDNAm` <- rep("0.1", 200)
m3$`Delta\nDNAm` <- rep("0.2", 200)
# make the tall data frame for plotting
dfp <- rbind(m1, rbind(m2, m3))

## ----eval = T-----------------------------------------------------------------
ggplot(dfp, aes(x = total.samples, y = power, color = `Delta\nDNAm`)) +
  geom_smooth(se = T, method = "loess") + theme_bw() + xlab("Total samples") + 
  ylab("Power") + geom_hline(yintercept = 0.8, color = "black", linetype = "dotted")

## ----eval = T-----------------------------------------------------------------
utils::sessionInfo()

