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:
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
References
Brideau, C., Gunter, B., Pikounis, B. and Liaw, A. (2003) Improved statistical methods for hit selection in high-throughput screening, J. Biomol. Screen8, 634–647.
Malo, N., Hanley, J.A., Cerquozzi, S., Pelletier, J. and Nadon, R. (2006) Statistical practice in high-throughput screening data analysis, Nature Biotechn24(2), 167–175.
Boutros, M., Br'as, L.P. and Huber, W. (2006) Analysis of cell-based RNAi screens, Genome Biology7, R66.
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)
)
Results
R version 3.3.1 (2016-06-21) -- "Bug in Your Hair"
Copyright (C) 2016 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)
R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.
R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.
Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.
> library(cellHTS2)
Loading required package: RColorBrewer
Loading required package: Biobase
Loading required package: BiocGenerics
Loading required package: parallel
Attaching package: 'BiocGenerics'
The following objects are masked from 'package:parallel':
clusterApply, clusterApplyLB, clusterCall, clusterEvalQ,
clusterExport, clusterMap, parApply, parCapply, parLapply,
parLapplyLB, parRapply, parSapply, parSapplyLB
The following objects are masked from 'package:stats':
IQR, mad, xtabs
The following objects are masked from 'package:base':
Filter, Find, Map, Position, Reduce, anyDuplicated, append,
as.data.frame, cbind, colnames, do.call, duplicated, eval, evalq,
get, grep, grepl, intersect, is.unsorted, lapply, lengths, mapply,
match, mget, order, paste, pmax, pmax.int, pmin, pmin.int, rank,
rbind, rownames, sapply, setdiff, sort, table, tapply, union,
unique, unsplit
Welcome to Bioconductor
Vignettes contain introductory material; view with
'browseVignettes()'. To cite Bioconductor, see
'citation("Biobase")', and for packages 'citation("pkgname")'.
Loading required package: genefilter
Loading required package: splots
Loading required package: vsn
Loading required package: hwriter
Loading required package: locfit
locfit 1.5-9.1 2013-03-22
Loading required package: grid
> png(filename="/home/ddbj/snapshot/RGM3/R_BC/result/cellHTS2/Bscore.Rd_%03d_medium.png", width=480, height=480)
> ### Name: Bscore
> ### Title: B score normalization
> ### Aliases: Bscore
> ### Keywords: manip
>
> ### ** 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)
+ )
>
>
>
>
>
>
> dev.off()
null device
1
>