Combines plate intensities (raw or already corrected in a per-plate fashion) from multi-channel data stored in slot
assayData of a
cellHTS instance by applying the function defined in
an object of class
a user-defined function for the multi channel summarization.
For each plate and replicate of a multi-color experiment, the function
fun is applied to relate the intensity values in the
respective channels of the
cellHTS object. The default is to
take the ratio between the second and first channels, with a threshold on
r1 (see the Usage section). This threshold should be adjusted by the
user according to the data. For an example, see the Examples section.
This function uses the content of slot
object and can be applied either to raw data or after per-plate correction of the intensity values in each channel using function
normalizePlates. This choice depends on channel summarization method that one intends to apply (i.e., the function given by argument
An object of class
cellHTS with the summarized multi-channel intensities stored in slot
This is an object of class
assayData containing one matrix with the summarized channel data (dimensions nrFeatures x nrSamples).
Boutros, M., Bras, L.P. and Huber, W. (2006) Analysis of cell-based RNAi screens, Genome Biology 7, R66.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
data(dualCh) x <- dualCh table(wellAnno(x)) ## Define the controls for the different channels: negControls=vector("character", length=dim(Data(x))) ## channel 1 - gene A ## case-insensitive and match the empty string at the beginning and end of a line (to distinguish between "geneA" and "geneAB", for example, although this is not a problem for the well annotation in this example) negControls= "(?i)^geneA$" ## channel 2 - gene A and geneB negControls= "(?i)^geneA$|^geneB$" posControls = vector("character", length=dim(Data(x))) ## channel 1 - no controls ## channel 2 - geneC and geneD posControls="(?i)^geneC$|^geneD$" ## Not run: writeReport(cellHTSlist=list("raw"=x), map=TRUE, plotPlateArgs=TRUE, posControls=posControls, negControls=negControls) ## End(Not run) ## In this example, we first normalize each channel separately by ## plate median scaling (no variance adjustment), since we need to make the measurements ## comparable across plates for the next step of channel summarization: xn = normalizePlates(x, scale="multiplicative", log=FALSE, method="median", varianceAdjust="none") ## Then, we define a low intensity threshold for the measurements in the constitutive channel R1, ## which will be set to the 5% quantile of the overall plate median corrected intensities in R1, ## and take the ratio R2/R1. xn = summarizeChannels(xn, fun = function(r1, r2, thresh=quantile(r1, probs=0.05, na.rm=TRUE)) ifelse(r1>thresh, r2/r1, as.numeric(NA))) ## After channel summarization, we take the log2 and apply plate median normalization, ## and opt to not adjust the variance: xn = normalizePlates(xn, scale="multiplicative", log=TRUE, method="median", varianceAdjust="none") ## Define the controls for the normalized and summarized intensities (only one channel): negControls = vector("character", length=dim(Data(xn))) ## For the single channel, the negative controls are geneA and geneB negControls= "(?i)^geneA$|^geneB$" posControls = vector("character", length=dim(Data(xn))) ## For the single channel, the negative controls are geneC and geneD posControls="(?i)^geneC$|^geneD$" ## Not run: writeReport(cellHTSlist=list("raw"=x, "normalized"=xn), force=TRUE, map=TRUE, plotPlateArgs=list(xrange=c(-3,3)), posControls=posControls, negControls=negControls) ## End(Not run) ## Another option could be to just take the log2 of the ratio between R2 and R1 raw intensities: xn1 = summarizeChannels(x, fun = function(r1, r2) log2(r2/r1))