Bscore {cellHTS2} | R Documentation

## B score normalization

### Description

Correction of plate and spatial effects of data stored in slot `assayData` of a `cellHTS` object using the B score method (without variance adjustment of the residuals). Using this method, a two-way median polish is fitted, on a per-plate basis, to account for row and column effects.

### Usage

    Bscore(object, save.model = FALSE)

### Arguments

`object` | a `cellHTS` object that has already been configured. See details.
`save.model` | a logical value specifying whether the per-plate models should be stored in slots `rowcol.effects` and `overal.effects`. See details.

### Details

This function is usually not called directly by the user, but from within the `normalizePlates` function. The normalization is performed in a per-plate fashion using the B score method, for each replicate and channel. In the B score method, the residual r_{ijp} of the measurement for row i and column j on the p-th plate is obtained by fitting a two-way median polish, in order to account for both row and column effects within the plate:

r_{ijp} = y_{ijp} - yest_{ijp} = y_{ijp} - (mu_p + R_{ip} + C_{jp})

y_{ijp} is the measurement value in row i and column j of plate p (taken from slot `assayData` - only sample wells are considered), and yest_{ijp} is the corresponding fitted value. This is defined as the sum between the estimated average of the plate (mu_p), the estimated systematic offset for row i (R_{ip}), and the systematic offset for column j (C_{jp}).

NOTE: In the original B score method, as presented by Malo et al., a further step is performed: for each plate p, each of the obtained residual values r_{ijp}'s are divided by the median absolute deviation of the residuals in plate p (MAD_p), resulting in:

r_{ijp}/MAD_p

The intention of such a further adjustment is to compensate for plate-to-plate variability in dynamic range. In the `Bscore` function, this step is not automatically performed, but can be done if B score normalization is called using the function `normalizePlates` with arguments `method="Bscore"` and `varianceAdjust="byPlate"`. See the latter function for more details.

If `save.model=TRUE`, the models row and column offsets and overall offsets are stored in the slots `rowcol.effects` and `overall.effects` of `object`.

### Value

An object of class `cellHTS` with B-score normalized data stored in slot `assayData`.
Furthermore, if `save.model=TRUE`, the row and column effects and the overall effects are stored in slots `rowcol.effects` and `overall.effects` , respectively. The latter slots are arrays with the same dimension as `Data(object)`, except the `overall.effects` slot, which has dimensions `nr Plates x nr Samples x nr Channels`.
After calling this function, the processing status of the `cellHTS` object is updated in the slot `state` to `object@state["normalized"]=TRUE`.

### Author(s)

Ligia Bras ligia@ebi.ac.uk

### References

Brideau, C., Gunter, B., Pikounis, B. and Liaw, A. (2003) Improved statistical methods for hit selection in high-throughput screening, J. Biomol. Screen 8, 634–647.

Malo, N., Hanley, J.A., Cerquozzi, S., Pelletier, J. and Nadon, R. (2006) Statistical practice in high-throughput screening data analysis, Nature Biotechn 24(2), 167–175.

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

### See Also

`medpolish`, `loess`, `locfit.robust`, `plotSpatialEffects`, `normalizePlates`, `summarizeChannels` `plateEffects`

### Examples

    data("KcViabSmall")
    xb <- Bscore(KcViabSmall, save.model = TRUE)
    ## Calling Bscore function from "normalizePlates" and adding the per-plate variance adjustment step:
    xopt <- normalizePlates(KcViabSmall, method="Bscore", varianceAdjust="byPlate", save.model = TRUE)
    ## Access the slots overall.effects and rowcol.effects
    ef1 = plateEffects(xb)
    ef2 = plateEffects(xopt)

    ## double-check
    stopifnot(
      all(xb@rowcol.effects==xopt@rowcol.effects, na.rm=TRUE),
      all(xb@overall.effects==xopt@overall.effects, na.rm=TRUE),
      identical(ef1, ef2)
    )

[Package cellHTS2 version 2.4.1 Index]