6.1 背景校正
默认的背景校正是从每个点的前景强度减去背景强度。如果RGList
对象没有经过背景校正,那么normalizeWithinArrays
将在默认情况下执行此操作。因此
> MA <- normalizeWithinArrays(RG)
相当于
> RGb <- backgroundCorrect(RG, method="subtract")
> MA <- normalizeWithinArrays(RGb)
然而,还有许多其他背景校正选项是在某些情况下更可取的,详情参见Ritchie等[32]。
为了评估差异表达,我们经常发现
> RG <- backgroundCorrect(RG, method="normexp", offset=50)
当使用大多数图像分析程序的输出时,上述设置优于简单的背景减法。这种方法可以自适应地根据背景强度调整前景,得到严格的正调整强度,即避免了负或零的校正强度。偏移的使用将极低强度点的对数比变化阻尼为0。
为了说明不同背景校正方法之间的一些差异,我们考虑一个自交的cDNA阵列,即相同的RNA源在双通道杂交。对于这个阵列,没有实际的差异表达。阵列打印在一个人类10.5k文库,并在双通道与Jurkatt RNA杂交(数据由墨尔本彼得麦卡勒姆癌症中心Andrew Holloway和Dileepa Diyagama提供)。阵列包括一系列在图形上突出显示的控制点。特别感兴趣的是尖峰比例控制应显示3和10倍的上下调变化。第一个图形显示使用GenePix软件获取的数据,并通过减去中位数进行背景校正,这是GenePix数据的默认值。图形显示了在低强度下M值扇形典型的楔形。观察到的M值的范围占据了尖峰比例控制的主导地位。由于校正的背景强度为0或负,所以在图上有1148个点没有显示。
第二个图显示了使用method=“normexp”
和offset=50
设置校正的相同阵列背景。现在尖峰比率控制明显超出M值的取值范围。阵列上所有的点都显示在图形上,因为现在没有缺失的M值。
第三幅图显示了使用SPOT软件量化和减去“变形”背景处理的相同阵列。该背景估计器产生与normexp
相似的效果。
使用“变形”背景或使用
method=“normexp”
和偏移的效果是稳定作为强度函数的M值的变异性。limma包使用的用于评估差异表达的贝叶斯经验方法将在同质化基因之间的差异性产生最大效益。这可以通过尽可能减少强度变化的依赖性来最好地实现[32]。
6.2 阵列内标准化
Limma实现了一系列针对点状微阵列的标准化方法。Smyth和Speed[40]描述了一些最常用的方法。这些方法可以大致分类为对每个阵列的M值分别进行标准化的方法(阵列内标准化)以及将强度或对数比标准化以在阵列之间可比较的方法(阵列间标准化)。本节主要讨论阵列内标准化,所有这些通常是传统双色数据对数比分析的需要。阵列间标准化将在6.3节进一步讨论。
打印头勒斯标准化[54]是默认的标准化方法,可以通过下面的命令执行
> MA <- normalizeWithinArrays(RG)
有一些不合适的情况是值得注意的。例如,Agilent阵列没有打印头组,所以应该使用全局勒斯标准化:
> MA <- normalizeWithinArrays(RG, method="loess")
打印头勒斯对于每个打印头组小于150个点的小阵列也是不可靠的。甚至更大的阵列可能具有特定的打印头组,如果对于一个或多个打印头,非缺失M值的点数量较小,那么对于打印头勒斯标准化也还是太小。在这些情况下,应该使用全局“loess”
标准化,否则使用鲁棒样条线标准化
> MA <- normalizeWithinArrays(RG, method="robustspline")
这是打印头与全局勒斯标准化之间的经验贝叶斯折衷,利用5参数回归样条用于代替勒斯曲线。
勒斯标准化假定阵列上的大部分探针没有差异表达。它不假定相同数量的上调和下调基因或者差异表达关于零对称,前提是勒斯拟合是在鲁棒的趋势中实现的,但大量的探头不改变表达水平是必要的。Oshlack等[24]表明,勒斯标准化可以耐受高达约30%的不对称差异表达仍然表现良好。对于阵列中唯一基因总数量小于150的精简阵列这个假设是可疑的,特别是如果这些基因被选择用于在RNA源之一中特异性表达。在这种情况下,最好的策略是在阵列上包含一系列无差异表达的控制点,如全文库池点滴定系列,然后使用下面讨论的加权方法[24]。全文库池意味着准备一池探针库,并以不同浓度打印池中的点[53]。文库应该足够大,可以确保所有探针的平均值没有差异表达。文库越大越好。只有500个克隆的文库池获得了好的结果。如果没有这样的控制点,精简阵列的标准化需要咨询专家意见。
默认情况下,在标准化中将使用RG
中发现的任何点质量权重。意即例如零重量的点(标记出来)不会影响其他点的标准化。然而,使用点质量权重不会导致任何点从数据对象中移除。即使是零重量的点也将被标准化,并将出现在输出对象中,这样的点对其他点根本没有影响。如果你不希望在标准化中使用质量权重,它们的使用可以被重写
> MA <- normalizeWithinArrays(RG, weights=NULL)
输出对象MA
仍然包含RG
中找到的任何点质量权重,但是这些权重不会用于标准化步骤。
利用控制点来辅助标准化过程通常是有用的。例如,如果阵列包含预先已知是未差异表达的一系列点,这些点在标准化过程中可以给予更多的权重。预先已知差异表达的点可以下调权重。例如假设controlStatus()
已被用于鉴定差异表达的标定点和不应该差异表达的一系列文库池滴定点。那么可能会使用
> w <- modifyWeights(RG$weights, RG$genes$Status, c("spikein","titration"), c(0,2))
> MA <- normalizeWithinArrays(RG, weights=w)
给予标定点0权重,滴定点的权重增加一倍。这个过程是通过“control”
标准化方法自动化进行的,例如,
> csi <- RG$genes$Status=="titration"
> MA <- normalizeWithinArrays(RG, method="control", controlspots=csi)
通常,csi
是一个指定非差异表达控制点的索引向量[24]。
滴定点加权的想法与[53]提出的复合标准化方法相同,但灵活性更高,更普遍适用。上述代码假定RG
已经包含了质量权重。如果没有,可以使用
> w <- modifyWeights(array(1,dim(RG)), RG$genes$Status, c("spikein","titration"), c(0,2))
> MA <- normalizeWithinArrays(RG, weights=w)
替代。
Limma包含一些更复杂的标准化方法。本指南第6.3节特别讨论了一些阵列间标准化方法。
6.3 阵列间标准化
本节探讨了可用于双色阵列间标准化的一些方法。其中大部分方法与阵列内标准化的区别是关注红色和绿色强度值,而不仅仅是对比率。因此,这些方法可能被称为单个通道或单独通道标准化方法。单个通道标准化通常是单独通道分析方法的先决条件,例如由lmscFit()
函数提供的方法。[56]给出了有关问题的进一步讨论。本节介绍如何重现[56]中给出的一些结果。第16.2节的Apoa1数据集将用于说明这些方法。我们假设Apoa1数据已经被加载,背景校正如下:
> load("Apoa1.RData")
在阵列间标准化之前要考虑的一个重要问题是如何进行背景校正。为了阵列间标准化的有效,重要的是避免可能由负或零校正强度产生的对数比缺失。backgroundCorrect()
函数给出了一些有用的选项。为了本节的目的,数据使用“minimum”
方法进行了校正:
> RG.b <- backgroundCorrect(RG,method="minimum")
plotDensities
显示了在所有阵列上单个绿色和红色通道的平滑经验强度。没有任何标准化,两个通道和阵列之间存在相当大的差异:
> plotDensities(RG.b)
在每个阵列的M值经过勒斯标准化之后,红色和绿色分布对于每个阵列基本相同,尽管阵列之间仍然有相当大的差异:
> MA.p <-normalizeWithinArrays(RG.b)
> plotDensities(MA.p)
勒斯标准化不影响A值。将分位数标准化应用于A值,使分布在阵列和通道上基本相同:
> MA.pAq <- normalizeBetweenArrays(MA.p, method="Aquantile")
> plotDensities(MA.pAq)
将分位数标准化直接应用于单个红色和绿色强度会产生相似的结果,但有点嘈杂:
> MA.q <- normalizeBetweenArrays(RG.b, method="quantile")
> plotDensities(MA.q, col="black")
Warning message:
number of groups=2 not equal to number of col in: plotDensities(MA.q, col = "black")
这里还没有探讨其他的阵列间标准化方法。例如normalizeBetweenArrays
和method="vsn"
给出了vsn包方差稳定标准化方法的接口。
6.4 使用marray包中的对象
marray包是R中众所周知的用于预处理双色微阵列数据的软件包。Marray提供读取,标准化和数据图形化的函数。Marray和limma都是早期分步骤的sma包的后续产物(http://www.stat.berkeley.edu/users/terry/zarray/Software/smacode.html)但是,limma建立在原始数据结构之上,而marray已经转换为完全正式的数据类表示。由于这个原因,limma向后兼容sma,marray则不是。
marray中的标准化函数侧重于灵活的M值定位和尺度标准化方法,而不是limma中阵列内和阵列间的方法。Marray提供了一些limma中没有的标准化方法,包括二维勒斯标准化和打印尺度标准化。虽然两个软件包中的标准化函数之间存在一些重叠,都提供打印头勒斯标准化,这两种方法在很大程度上是互补的。Marray还提供高度开发的函数,用于图形化双色微阵列数据。
marray中的读取函数,生成marrayRaw
类对象,而在标准化时生成marrayNorm
类对象。这些类的对象可以使用convert包来转换和使用limma数据对象。使用as
函数,marrayRaw
对象可转换为RGList
对象,marrayNorm
对象可转换为MAList
对象。例如,如果Data
是一个marrayNorm
对象,那么
> library(convert)
> MA <- as(Data, "MAList")
转换成MAList
对象。
marrayNorm
对象也可以直接在limma中直接使用而不需要转换,而通常是推荐这样做的。如果Data
是一个marrayNorm
对象,那么
> fit <- lmFit(Data, design)
将线性模型适用于Data
,就像对MAList
对象一样。然而,一个区别是marray读取函数倾向于以质量点权重填充marrayNorm
对象的maW
槽标志,而不是如limma所预期的定量非负权重。如果是这样的话,可能需要
> fit <- lmFit(Data, design, weights=NULL)
来关闭使用点质量权重。