芯片数据分析步骤3 芯片质量控制-affy

affy芯片质量控制

前言

大家手头的芯片数据一般有两个来源,一个是自己做的芯片的数据,一个是从数据库下载的芯片数据。

如果是自己做的芯片的数据,是一定要进行芯片质量控制的。虽然厂家会提供芯片质量分析的结果,但如果有可能的话,最好还是自己也进行质量分析。根据分析的结果,决定排除哪些芯片的数据,甚至重做也是有可能的。一定只能用质量好的芯片数据,否则可能影响实验结果。自己做的芯片数据在质量控制的阶段一定要严格把关,分析过程越详细越好。

如果手头的芯片数据是从数据库下载的话,那一般是没有质量问题的。因为上传者在上传数据之前就已经进行过质量控制了,使用者一般不需要进行严格的质量控制,分析流程也不需要太详细以加快处理速度。

方法

1 使用 arrayanalysis 网站

1、登录arrayanalysis网站

2、选择Get started

3、上传包含.CEL文件的Zip压缩文件

4、点击Run affyQC

5、查看并下载输出的芯片质控图。

arrayanalysis网站能够对AffymetrixIllumina芯片的原始数据进行质量控制。操作非常简单,输出的质量控制结果非常的详细,甚至详细到没有必要的程度。

如果在网站上运行质量控制可能速度太慢,我自己上传的文件稍微大一点就要运行半天。如果不想在网页上运行,网站也提供了R脚本。把R脚本下载下来,照着运行就可以了。

2 使用affy包、oligo包、simpleaffy包和arrayQuanlityMetrics包

1 灰度图

芯片灰度图能够检测芯片表面是否均一,是否存在spatial artifact。affy包与oligo包的代码相同

不存在spatial artifact

存在spatial artifact

使用affy包生成灰度图的代码如下(data为读取CEL文件得到的AffyBatch对象):

library(affy)
for (i in 1:length(sampleNames(data))){
  name = paste("image",sampleNames(data)[i],".jpg",sep="")
  jpeg(name)
  image(data[,i])
  dev.off()
}

自动生成所有芯片的灰度图,并储存在工作目录下。

效果如下。

2 MA 图

MA图最初是为双色荧光芯片设计的,但现在也能用于单色荧光芯片。用于单色荧光芯片的时候,要先假想一个芯片。假想芯片的每个探针的强度是所有芯片该探针强度的中位数。然后拿每一个芯片跟假想芯片进行比较,生成MA图。

使用affy包或oligo包生成MA图的方法是一样的。使用以下代码即可自动在工作目录下生成每一张芯片的MA图。

for (i in 1:length(sampleNames(data))){
name = paste("MAplot",sampleNames(data)[i],".jpg",sep="")
jpeg(name)
MAplot(data,which=i)
dev.off()
}

affy包MAplot默认参数plot.method = "normal",即生成散点图。而oligo包MAplot默认参数plot.method = "smoothScatter",即生成smoothScatter图。如下图。

3 Chip pseudo-images

Chip pseudo-images也是用来检测spatial artifact的。方法是先拟合探针水平模型(probe-level model, PLM),然后做pseudo images。探针水平模型假设probe set中的probes在所有的样品中表现一致,与目标序列结合良好的探针均结合良好,反之亦然。

根据探针水平模型的权重或是残差,就可以生成对应的pseudo-images。

用affyPLM包和oligo包生成pseudo-images的代码有些许不同。

用affyPLM包生成Chip pseudo-images的代码如下。

1、拟合探针水平模型

library(affyPLM)
pset <- fitPLM(data, output.param = list(varcov="none"))

参数output.param = list(varcov="none")省略一些不必要的计算,节省内存,加快运算速度。

2、生成权重图

for (i in 1:length(sampleNames(data))){
  name = paste("pseudoimageweights", sampleNames(data)[i], ".jpg", sep = "")
  jpeg(name)
  image(pset, type = "weights",which = i)
  dev.off()
}

效果如下。

可以看出图中几乎不存在spatial artifact。给个存在spatial artifact的例子给你们看看。

可以看到存在相当明显的spatial artifact。一般这样的芯片是不能要的。

3、生成残差图

for (i in 1:length(sampleNames(data))){
  name = paste("pseudoimageresids", sampleNames(data)[i], ".jpg", sep = "")
  jpeg(name)
  image(pset, type = "resids",which = i)
  dev.off()
}

效果如下。

oligo包中的代码与affyPLM不同。因为oligo包读取的表达谱芯片格式为ExpressionFeatureSet,并非AffyBatch,所以不能用affyPLM包进行作图,只能用oligo包自带的作图工具。

代码如下。

1、拟合探针水平模型

pset <- fitProbeLevelModel(data)

2、生成pseudo-images

生成权重图的代码与affy包的代码完全相同。

生成残差图的代码有些许不同。

for (i in 1:length(sampleNames(data))){
  name = paste("pseudoimageresids", sampleNames(data)[i], ".jpg", sep = "")
  jpeg(name)
  image(pset, type = "residuals",which = i)
  dev.off()
}

4、生成RLE,NUSE图

Relative Log Expression (RLE)图是最常用的QC图之一。RLE反映了基因表达量的一致性趋势,它定义为一个探针组在某个样品的表达值除以该探针组在所有样品中表达值的中位数后取对数。每个样品的中心应该非常接近纵坐标0的位置。如果个别样品的表现与其他大多数明显不同,那说明可能这个样品可能有问题。

Normalized Unscaled Standard Errors (NUSE)也是非常常见的QC图。NUSE是一种比RLE更为敏感的质量检测手段。我们可以结合NUSE图来确定是否某个芯片质量有问题。NUSE定义为一个探针组在某个样品的PM值的标准差除以该探针值在各样品中的PM标准差的中位数。如果所有芯片的质量都是非常可靠的话,那么它们的标准差会非常接近,因此它们的NUSE值都会在1附近。

使用affy包或oligo包生成RLE和NUSE的代码是一样的。

生成RLE图的代码。

RLE(pset)

生成NUSE图的代码。

NUSE(pset)

3 使用 simpleaffy 包进行质量控制

simpleaffy整合了许多affy包常用的功能,剔除了不少基本用不着的功能,新增了质量控制的功能。这里只讲作质控图的流程。代码如下。

library(simpleaffy)
data.qc <- qc(data)
plot(data.qc)

结果如下。

左边上方的数字为该芯片中探针calls为present所占的比例,下方数字为探针背景中探针calls为present所占的比例。两者应当差别不大,最好不超过10%。

蓝色区域为scale factor。带点的线应该在蓝色区域内。三角形和圆圈为内参探针的比值,actin应当不超过1.25,gapdh应当不超过3.质量合格的标为蓝色,不合格的标为红色。

4 使用 arrayQualityMetrics 包进行质量控制

一般上传到GEO数据库中的芯片已经经过了一轮质量控制,基本不会有质量太差的芯片。所以如果偷懒的话,前面的3步都不需要做,只要做第4步就行了。

arrayQualityMetrics包整合了常用的芯片质量控制工具,能够输出 高清大图 以及提供 html 用于手动操作。操作傻瓜,能够对affy芯片、Illumina芯片和双通道芯片进行质控。输入的格式为ExpressionSet, AffyBatch, ExpressionSetIlluminaNChannelSet

代码如下

library(arrayQualityMetrics)
arrayQualityMetrics(expressionset = data,
outdir = "fig",
force = TRUE,
do.logtransform = T)

参数outdir为结果输出目录,force = TRUE 表示如果文件已存在就覆盖, do.logtransform = T 是因为原始数据没有进过标准化处理,因此需要先进行log变换,才有可比性。

结果如下。

每种图片都有图片格式和PDF格式。点击index可以进入web界面。下面给出部分结果图。

由于用于测试的数据并未经过标准化处理,所以即使存在差别显著的芯片也不应该立刻舍去。应该先进行RMA,MAS5之类的标准化处理之后,再用arrayQualityMetrics包进行质量控制。如果芯片质量还是不好,那就应该舍去。

你可能感兴趣的:(芯片数据分析,芯片数据分析,R)