R/qc_pipe.R

Defines functions qc_pipe

Documented in qc_pipe

# QC pipeline


#' QC pipeline.
#'
#' @param rgset An object of \code{\link[minfi]{RGChannelSet-class}}.
#' @param output output directory.
#' @param qc_csv QC metrics CSV file.
#' @param qc_excel QC metrics Excel file.
#' @param beta_value_distribution_file a plot file for beta value distribution.
#' @param background_offset background correction offset. Default to 3000.
#' @param verbose A logical scalar. Default to TRUE.
#' @returns An object of \code{\link[minfi]{RGChannelSet-class}} with QC metrics
#'   added to phenotype data.
#' @export
qc_pipe <- function(rgset,
                    output,
                    qc_csv = "qc.csv",
                    qc_excel = "qc.xlsx",
                    beta_value_distribution_file = "beta_value_histogram_fill_by_sample.png",
                    background_offset = 3000,
                    verbose = TRUE) {
  if (missing(rgset))
    stop("rgset is required.")
  if (missing(output))
    stop("output is required.")
  if (!dir.exists(output)) {
    logger::log_info(glue::glue("Create output directory {output}"))
    dir.create(output, recursive = TRUE)
  }
  rgset <- get_qc_metrics(rgset)
  qc <- minfi::pData(rgset) %>%
    as.data.frame()
  if (verbose) {
    logger::log_info(glue::glue("Write QC metrics into CSV {file.path(output, qc_csv)}"))
  }
  readr::write_csv(qc, file = file.path(output, qc_csv))
  beta_value_distribution_path <- file.path(output, beta_value_distribution_file)
  if (verbose) {
    logger::log_info(glue::glue(
      "Plotting beta-value distribution {beta_value_distribution_path}"
    ))
  }
  plot_beta_value_histogram_fill_by_sample(rgset,
                                           output_file = beta_value_distribution_path,
                                           height = 7,
                                           width = 11)
  if (verbose) {
    logger::log_info(glue::glue("Write QC metrics into Excel {file.path(output, qc_excel)}"))
  }
  write_qc_metrics_excel(
    qc,
    excel_file = file.path(output, qc_excel),
    beta_value_distribution_file = beta_value_distribution_path
  )
  rgset
}
markgene/yamat documentation built on Aug. 26, 2024, 11:56 p.m.