当前位置 : 主页 > 编程语言 > java >

背景校正,芯片预处理的第一步!

来源:互联网 收集:自由互联 发布时间:2022-06-23
对于芯片数据而言,在分析之前,需要先进行背景校正background correct。所谓背景校正,其本质上都是一个减法,将总体信号看做由探针特异性的结合信号(真实信号)和非特异性结合(噪声


对于芯片数据而言,在分析之前,需要先进行背景校正background correct。所谓背景校正,其本质上都是一个减法,将总体信号看做由探针特异性的结合信号(真实信号)和非特异性结合(噪声信号)两部分组成,背景校正的工作就是从总体信号中减去噪声信号,从而得到真实信号。

具体到应用层面,有多种算法可供选择,在limma包中,通过backgroundCorrect函数提供了各种算法的接口,具体如下

1.  substract

将E看做总体信号,将Eb看做背景信号,substract算法如下


E <- E - Eb

直接用总体信号减去背景信号

2. half

half 算法如下


E <- pmax(E - Eb, 0.5)

substract算法校正后的intensity可能为负数,为了避免负值的问题,half算法设置了一个阈值0.5, 当校正后的intensity小于0.5时,直接用0.5作为校正后的intensity。

3.  minimum

minimum算法如下

E <- E - Eb
for (slide in 1:ncol(E)) {
i <- E[, slide] < 1e-18
if (any(i, na.rm = TRUE)) {
m <- min(E[!i, slide], na.rm = TRUE)
E[i, slide] <- m/2
}
}

和half算法类似,也是为了避免负值问题,对于校正后的每一列,以1e-18作为阈值,小于该阈值的intensity替换为这一列大于该阈值的最小intensity的1/2。

4. movingmin

movingmin算法如下


E <- E - ma3x3.matrix(Eb, FUN = min, na.rm = TRUE)

5. edwards

edwards算法如下

one <- matrix(1, nrow(E), 1)
delta.vec <- function(d, f = 0.1) {
quantile(d, mean(d < 1e-16, na.rm = TRUE) * (1 +
f), na.rm = TRUE)
}
sub <- E - Eb
delta <- one %*% apply(sub, 2, delta.vec)
E <- ifelse(sub < delta, delta * exp(1 - (Eb + delta)/E), sub)

和half算法类似,也是为了避免负值问题,不同点在于使用一个函数来设置最小intensity。

6. normexp

normexp算法如下


if (!is.null(Eb)) E <- E - Eb
for (j in 1:ncol(E)) {
if (verbose) cat("Array", j)
x <- E[, j]
out <- normexp.fit(x, method = normexp.method)
E[, j] <- normexp.signal(out$par, x)
if (verbose) cat(" corrected\n")
}
})

可以通过官方自带的示例来看下normexp算法的效果

> x <- c(2,3,1,10,3,20,5,6)
> out <- normexp.fit(x)
> normexp.signal(out$par, x=x)
[1] 1.000000e+00 2.000000e+00 4.930469e-07 9.000000e+00 2.000000e+00
[6] 1.900000e+01 4.000000e+00 5.000000e+00

如果对于算法的细节和效果感兴趣,可以详细阅读以下文献

>https://academic.oup.com/bioinformatics/article/23/20/2700/230165

背景校正,芯片预处理的第一步!_数据分析

在该文献中,推荐使用normexp算法来处理绝大多数的双通道芯片。

·end·

背景校正,芯片预处理的第一步!_公众号_02

一个只分享干货的

生信公众号


【文章转自荷兰服务器 http://www.558idc.com/helan.html 欢迎留下您的宝贵建议】
上一篇:原始数据不仅有GEO, 还有ArrayExpress!
下一篇:没有了
网友评论