# Helper function to assemble comparison units.
.make_comparison_unit <- function(data, type, comparison){
cl_samps <- unlist(data$control_samples)
bl_samps <- unlist(data$baseline_samples)
tr_samps <- unlist(data$treatment_samples)
pl_samps <- unlist(data$plasmid_samples)
if(type == "samples"){
samples <- c(cl_samps, bl_samps, tr_samps, pl_samps)
samples <- samples[!is.null(samples)]
if(length(samples) == 0)
stop(paste("no samples found for analysis comparison:",comparison))
return(samples)
}else{
return(c(rep("control",length(cl_samps)),
rep("baseline",length(bl_samps)),
rep("treatment",length(tr_samps)),
rep("plasmid",length(pl_samps))))
}
}
#' extract_analysis_comparisons
#'
#' Extracts analysis comparisons from output generated by `fgcQC::read_analysis_config_json`.
#'
#' @param json_list A list returned by `fgcQC::read_analysis_config_json`.
#'
#' @return A data frame containing sample comparisons.
#' @author Alex T. Kalinka, \email{alex.kalinka@@cancer.org.uk}
#' @importFrom dplyr rowwise ungroup do
#' @export
extract_analysis_comparisons <- function(json_list){
if(!inherits(json_list, "list") || !"comparisons" %in% names(json_list) || !inherits(json_list$comparisons,"data.frame"))
stop("'json_list' should be a list produced by the 'fgcQC::read_analysis_config_json' function")
comp <- json_list$comparisons %>%
dplyr::rowwise() %>%
dplyr::do(data.frame(sample = .make_comparison_unit(., type = "samples", comparison = .$name),
class = .make_comparison_unit(., type = "type", comparison = .$name),
comparison = .$name, type = .$type[1], goal = .$goal[1],
stringsAsFactors = F)) %>%
dplyr::ungroup()
return(comp)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.