summarizeChannels {cellHTS2} | R Documentation

## Summarization of dual-channel data

### Description

Combines plate intensities (raw or already corrected in a per-plate fashion) from dual-channel data stored in slot `assayData` of a `cellHTS` instance by applying the function defined in `fun`.

### Usage

    summarizeChannels(object,
        fun = function(r1, r2, thresh) ifelse(r1>thresh, r2/r1, as.numeric(NA)))

### Arguments

`object` | an object of class `cellHTS` that has been configured. See details.
`fun` | a user-defined function for the two channel summarization. `fun` takes two numeric vectors and returns a numeric vector of the same length. The default is to take the ratio between the second and first channels, with a threshold on `r1` shown above in the Usage section that should be set by the user.

### Details

For each plate and replicate of a two-color experiment, the function defined in `fun` is applied to relate the intensity values in the two 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 `assayData` of `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 `fun`).

### Value

An object of class `cellHTS` with the summarized dual-channel intensities stored in slot `assayData`. This is an object of class `assayData` containing one matrix with the summarized channel data (dimensions nrFeatures x nrSamples).

### Author(s)

Ligia Bras ligia@ebi.ac.uk, Wolfgang Huber huber@ebi.ac.uk

### References

Boutros, M., Bras, L.P. and Huber, W. (2006) Analysis of cell-based RNAi screens, Genome Biology 7, R66.

### See Also

`normalizePlates`, `scoreReplicates`, `summarizeReplicates`.

### Examples

        data(dualCh)
        x <- dualCh
        table(wellAnno(x))

        ## Define the controls for the different channels:
        negControls=vector("character", length=dim(Data(x))[3])

        ## 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[1]= "(?i)^geneA$"
        ## channel 2 - gene A and geneB
        negControls[2]= "(?i)^geneA$|^geneB$"
        posControls = vector("character", length=dim(Data(x))[3])
        ## channel 1 - no controls
        ## channel 2 - geneC and geneD
        posControls[2]="(?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
        ## 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))[3])
        ## For the single channel, the negative controls are geneA and geneB
        negControls[1]= "(?i)^geneA$|^geneB$"
        posControls = vector("character", length=dim(Data(xn))[3])
        ## For the single channel, the negative controls are geneC and geneD
        posControls[1]="(?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))

[Package cellHTS2 version 2.4.1 Index]