芯片数据分析步骤3 芯片质量控制-affy
affy芯片质量控制
前言
大家手头的芯片数据一般有两个来源,一个是自己做的芯片的数据,一个是从数据库下载的芯片数据。
如果是自己做的芯片的数据,是一定要进行芯片质量控制的。虽然厂家会提供芯片质量分析的结果,但如果有可能的话,最好还是自己也进行质量分析。根据分析的结果,决定排除哪些芯片的数据,甚至重做也是有可能的。一定只能用质量好的芯片数据,否则可能影响实验结果。自己做的芯片数据在质量控制的阶段一定要严格把关,分析过程越详细越好。
如果手头的芯片数据是从数据库下载的话,那一般是没有质量问题的。因为上传者在上传数据之前就已经进行过质量控制了,使用者一般不需要进行严格的质量控制,分析流程也不需要太详细以加快处理速度。
方法
1 使用 arrayanalysis 网站
1、登录arrayanalysis网站
2、选择Get started
3、上传包含.CEL文件的Zip压缩文件
4、点击Run affyQC
5、查看并下载输出的芯片质控图。
arrayanalysis网站能够对Affymetrix和Illumina芯片的原始数据进行质量控制。操作非常简单,输出的质量控制结果非常的详细,甚至详细到没有必要的程度。
如果在网站上运行质量控制可能速度太慢,我自己上传的文件稍微大一点就要运行半天。如果不想在网页上运行,网站也提供了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, ExpressionSetIllumina 和 NChannelSet。
代码如下
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包进行质量控制。如果芯片质量还是不好,那就应该舍去。
芯片数据分析步骤3 芯片质量控制-affy相关推荐
- 芯片数据分析步骤6 探针注释
注释探针 注释探针的原因 为了防止非特异性结合造成的干扰,芯片厂商往往会使用多个探针检测同一个基因的表达.因此,芯片厂商不会使用基因名作为探针的名称,而是使用自己定义的探针名称.要合并重复探针,我们必 ...
- 高通量芯片数据分析:转录组芯片数据分析
利用R的bioconductor包进行分析.由于安装的是R3.5以上版本所以实际用的是用biomanager指令,其他基本一样. 不同的包有各类坑,具体可以查阅bioconductor官网寻找解决办法 ...
- 用R和BioConductor进行基因芯片数据分析(四):芯片内归一化
接前一篇: 用R和BioConductor进行基因芯片数据分析(三):计算median 归一化是从normalization翻译过来的.归一化的目的是使各次/组测量或各种实验条件下的测量可以相互比较, ...
- 芯片分析步骤1 芯片数据下载-ArrayExpress
从ArrayExpress数据库下载数据的方法 1.在ArrayExpress Search中输入编号或是关键词,选择符合的Accession,在ftp中进行手动下载,或是在R中用ArrayExpre ...
- 芯片数据分析笔记【05】 | 处理芯片数据的R包
芯片数据分析笔记[01] | 基因芯片的基本原理 芯片数据分析笔记[02] | 芯片数据库 芯片数据分析笔记[03] | GEO数据库使用教程及在线数据分析工具 芯片数据分析笔记[04] | Arra ...
- 【Bioinfo Blog 013】【R Code 011】——甲基化芯片数据分析(ChAMP包)
目录 一.甲基化芯片检测 1.1 DNA甲基化 1.2 甲基化芯片原理 1.3 β值 1.4 分析需要考虑的问题 二.甲基化芯片数据分析 2.1 Pipeline 2.1.1 450K 2.1.2 E ...
- 数据挖掘学习笔记——GEO数据库:芯片数据分析
数据挖掘 数据挖掘学习笔记--GEO数据库:芯片数据分析 文章目录 数据挖掘 一.芯片基础知识 1.1.背景 二.GEO数据库概述 2.1.基础简介 2.2.检索页面展示 三.GSE项目的三种下载方式 ...
- 比较两组数据的差异用什么图更直观_芯片数据分析中常见的一些图的作用
今天给大家讲讲芯片数据分析中常见的一些图的作用,让大家伙儿知道它们在BB些啥. 箱式图(Box plot) 基因芯片的原始数据是需要进行标准化处理的,主要目的是消除由于实验技术(如荧光标记效率.扫描参 ...
- 芯片数据分析----芯片数据可视化
基因芯片技术,也称为核酸阵列芯片技术,产生于20世纪90年代,在近十几年得到了规模化和产业化.已经成为转录组重要的支撑技术.基因芯片技术可以测量某一条件下成千上万个基因转录表达情况.因此将产生较大的数 ...
- 芯片数据分析笔记【04】 | ArrayExpress 数据库介绍
芯片数据分析笔记[01] | 基因芯片的基本原理 芯片数据分析笔记[02] | 芯片数据库 芯片数据分析笔记[03] | GEO数据库使用教程及在线数据分析工具 NCBI 的基因表达综合数据库 GEO ...
最新文章
- C# WINFORM 打包数据库
- 微信小程序 openid及支付的若干问题解决方案
- Windows Phone 8初学者开发—第12部分:改进视图模型和示例数据
- VS集成环境中的JavaScript脚本语法检查
- python binary lib on win/各种python库的二进制包
- DeepHSV:号称可以商用的计算机笔迹鉴别算法
- Nginx-1.9.8推出的切片模块
- svga文件如何查看_电脑隐藏文件?如何查看隐藏文件 方法简单易学
- selenium控制浏览器切换页面
- Android学习笔记----18_在SQLite中使用事务
- mysql数据类型强转
- 阿里云华北1235、华东1、华东2和华南1分别对应哪些城市?地域节点物理数据中心在哪?...
- Originpro绘制y轴偏移堆积图无法设置偏移量
- 列表中循环添加字典出现覆盖现象的问题
- css 控制文字换行相关属性
- 《CSAPP》(第3版)答案(第三章)(一)
- JavaScript 实现购物车
- Java 字符集编解码及乱码示例
- Ernest Adams总结50个最伟大的游戏创意
- Spring MVC的工作原理和机制