View source: R/backgroundBiasEstimation.R
backgroundBiasEstimation | R Documentation |
Estimate a background bias within A, M values from a tiling array.
backgroundBiasEstimation( x, y, AM.scale.compensation = T, smoothness = 0.08, epsilon = 0.001, nsteps = 11, plots = F, xlab = "A", ylab = "M" )
x |
numeric vector of A values, e.g. the average of log2 of the specific and the reference signals. |
y |
numeric vector of M values, e.g. the log2 ratio of the specific over the reference signal. |
AM.scale.compensation |
|
smoothness |
numeric coefficient controlling the meanshift radius in the rescaled (A,M) plane. |
epsilon |
convergence limit corresponding to the minimum displacement required per meanshift iteration in the rescaled (A,M) plane. |
nsteps |
minimum number of meanshift iterations. |
plots |
|
xlab |
label of the x axis for control plots. |
ylab |
label of the y axis for control plots. |
numeric value of the estimated bias angle in radians
Benjamin Leblanc
Leblanc B., Comet I., Bantignies F., and Cavalli G., Chromosome Conformation Capture on Chip (4C): data processing. Book chapter in Polycomb Group Proteins: Methods and Protocols. Lanzuolo C., Bodega B. editors, Methods in Molecular Biology (2016). http://dx.doi.org/10.1007/978-1-4939-6380-5_21
backgroundBiasCorrection, normalizeArrayData
# A simple test of the accuracy of bias estimations ntst <- 10 # Increase to over 1000 for a reliable test of accuracy rotate <- function(x, y, theta) { u <- x * cos(theta) - y * sin(theta) v <- x * sin(theta) + y * cos(theta) list(x=u, y=v) } tst <- c() plots <- T pb <- txtProgressBar(min=1, max=ntst, char="|", style=3) for(i in 1:ntst) { n.bg <- sample(c(70000, 80000, 90000), 1) # Background level data n.sp <- 100000 - n.bg # Enriched level data a <- c(rnorm(n.bg, 10, 2), rnorm(n.sp, 10, 1)) m <- c(rnorm(n.bg, 0, 0.5), rnorm(n.sp, 1.5, 1)) alpha <- runif(1, -pi/4, pi/4) # Pick a random angle r <- rotate(a, m, theta = alpha) # Simulate bias xtm <- Sys.time() theta <- backgroundBiasEstimation( # Estimate bias r$x, r$y, plots=plots, AM.scale.compensation = F, smoothness = 0.07 ) xtm <- Sys.time() - xtm alpha <- 180/pi * alpha theta <- 180/pi * theta tst <- rbind( tst, c(n.bg=n.bg, n.sp=n.sp, time=xtm, simulated=alpha, estimated=theta) ) setTxtProgressBar(pb, i) plots <- F } close(pb) write.table( tst, "testBackgroundBiasEstimation.txt", quote = F, sep = '\t', row.names=F, col.names=T ) tst <- read.delim("testBackgroundBiasEstimation.txt", stringsAsFactors=F) boxplot(tst$estimated - tst$simulated, range=0, ylab="estimated - simulated (degrees)") legend("topright", paste("N =", ntst), bty="n") # Result with ntst=1000, delta <2.5 degrees in 95% of the tests: # delta <- abs(tst$estimated - tst$simulated) # q <- quantile(delta, probs=c(0.5, 0.75, 0.9, 0.95, 0.99), na.rm=T)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.