\name{writeQAReport} \alias{writeQAReport} \alias{writeLines,data.frame,file,missing,missing-method} \title{ Create HTML report for (lists of) qaProcess objects } \description{ This function combines all graphical output of multiple QA processes for one or several \code{\link[flowCore:flowSet-class]{flowSets}} in a single hyperlinked HTML document. } \usage{ writeQAReport(set, processes=NULL, globalProcess=NULL, outdir = "./qaReport", grouping = NULL,pagebreaks=TRUE, pdf=TRUE) } \arguments{ \item{set}{ A \code{\link[flowCore:flowSet-class]{flowSet}} or a list of several \code{\link[flowCore:flowSet-class]{flowSets}}.} \item{processes}{ A list of \code{\link[flowQ:qaProcess-class]{qaProcess}} objects or, in the case of multiple \code{\link[flowCore:flowSet-class]{flowSets}}, a list of lists of \code{qaProcess} objects. See below for further details.} \item{globalProcess}{ A list of \code{qaProcess} objects generated by multipanel comparison qaProcess functions, when set is a list of \code{\link[flowCore:flowSet-class]{flowSets}} .} \item{outdir}{ The directory to which the HTML report is to be saved. Each \code{\link[flowQ:qaProcess-class]{qaProcess}} object should have been created in the same directory. } \item{grouping}{ A character scalar indicating a variable in the \code{\link[flowCore:flowSet-class]{flowSet}}'s \code{phenoData} that is used as a grouping factor in the output. } \item{pagebreaks}{ A logical indicating whether the output should be on one long page, or split over several pages. } \item{pdf}{ A logical indicating whether vectorized versions of the images should be included. Setting this to \code{TRUE} implies that the individual QA processes have also been created with setting \code{pdf=TRUE}. } } \details{ Both the information about graphical output generated as part of a QA process as well as the qunatitative or qualitative results are stored in objects of class \code{\link[flowQ:qaProcess-class]{qaProcess}}. The creation of such objects is abstracted in dedicated constructor function and the user should call these functions directly rather than creating \code{\link[flowQ:qaProcess-class]{qaProcess}} manually. \code{\link[flowQ]{writeQAReport}} takes lists of such objects and combines their information in a unified HTML document. A grouping factor can be specified to indicate subgroups of the data. In the case of multiple panels, a list of \code{\link[flowCore:flowSet-class]{flowSets}} can be given to \code{\link[flowQ]{writeQAReport}}, and the function expects a list of lists of processes, where each process list is specific to one panel. An entry point to the output of this function can be found at \code{outdir/index.html}. } \value{ The function is mostly called for it's side effects, that is, the generation of a HTML quality report in \code{outdir}. A URL to an entry point for browsing of the report is returned. } \author{ Florian Hahne } \seealso{ \code{\link[flowQ]{qaProcess.marginevents}}, \code{\link[flowQ]{qaReport}}, \code{\link[flowQ:qaProcess-class]{qaProcess}}, \code{\link[flowQ]{qaProcess.timeline}}} \examples{ \dontrun{ data(GvHD) GvHD <- transform(GvHD, "FL1-H"=asinh(`FL1-H`), "FL2-H"=asinh(`FL2-H`)) dest <- tempdir() qp1 <- qaProcess.timeline(GvHD, channel="FL1-H", outdir=dest, cutoff=1) qp2 <- qaProcess.marginevents(GvHD, channels=c("FL1-H", "FL2-H"), outdir=dest, cFactor=4) url <- writeQAReport(GvHD, processes=list(qp1, qp2), outdir=dest, grouping="Patient") browseURL(url) } } \keyword{ IO } \keyword{ dynamic }