前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >背景校正,芯片预处理的第一步!

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

作者头像
生信修炼手册
发布2022-04-18 15:30:33
6070
发布2022-04-18 15:30:33
举报
文章被收录于专栏:生信修炼手册生信修炼手册

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

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

1. substract

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

代码语言:javascript
复制
E <- E - Eb

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

2. half

half 算法如下

代码语言:javascript
复制
E <- pmax(E - Eb, 0.5)

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

3. minimum

minimum算法如下

代码语言:javascript
复制
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算法如下

代码语言:javascript
复制
E <- E - ma3x3.matrix(Eb, FUN = min, na.rm = TRUE)

5. edwards

edwards算法如下

代码语言:javascript
复制
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算法如下

代码语言:javascript
复制
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算法的效果

代码语言:javascript
复制
> 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·

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-04-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信修炼手册 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档