合并重复探针

合并探针的原因

为了避免非特异性结合等干扰因素影响实验结果,芯片厂商往往采取多个探针检测同一基因表达的策略,从而导致注释探针后发现许多探针被注释为同一个基因。但在后续的分析中,程序往往不能接受表达矩阵中存在多个探针对应同一基因。因此,在进行后续分析之前,我们需要选取一个标准,对被注释为同一基因的探针进行合并。唯一要注意的是,要在过滤后再合并重复探针。

合并重复探针的方法

1 使用R语言合并重复探针

这个方法要求有一定的R语言功底。一般来说,我们会选择用探针的最大值或是中位数来合并重复探针。意思是只留下统计量最大的探针,其他都筛掉。这种方法能够一定程度上增加差异基因的数目,但也容易造成假阳性的结果。

使用ALL包的ALL数据作为例子。为了省时间和突出重点,在下文的例子中就先不对探针进行过滤。按照正常的步骤,应该先对探针进行过滤,然后才能进行合并重复探针的操作。

先注释探针。每个步骤的目的请见注释探针。

library(ALL)
data(ALL)
library(hgu95av2.db)
probe2symbol <- toTable(hgu95av2SYMBOL)
exprSet <- as.data.frame(exprs(ALL))
exprSet$probe_id <- rownames(exprSet)
exprSet_symbol <- merge(probe2symbol, exprSet, by = "probe_id")
exprSet_symbol$probe_id <- NULL

使用最大值合并探针。注意,请先运行命令length(which(is.na(exprSet_symbol))),若返回值大于0,说明存在NA值。需要先用impute包的命令 exprSet_symbol<- impute.knn(exprSet_symbol)$data填充NA值,才能进行这一步。

exprSet_symbol <- aggregate(x = exprSet_symbol[,-1],by = list(exprSet_symbol$Symbol), FUN = max)

得到的exprSet_symbol即为合并探针之后的表达矩阵,可以用于后续分析。稍微解释一下上述代码。x = exprSet_symbol[,-1]是进行整合的数据部分。by = list(exprSet_symbol$Symbol)指对基因名进行整合。FUN = max指使用最大值进行整合。

使用中位数合并探针得到的差异基因数量可能少于使用最大值合并探针。这方法更加保守,但更加不容易出错。代码如下,只是更改了FUN参数。

exprSet_symbol <- aggregate(x = exprSet_symbol[,-1],by = list(exprSet_symbol$Symbol), FUN = median)

2 使用 findLargest 函数合并重复探针

findLargest函数是整合与genefilter包中的函数之一,功能是根据最大的统计量合并重复探针。findLargest函数的特点是无需事先对表达矩阵进行注释,函数会自动识别重复探针并返回统计量最大的探针的名称。findLargest函数比起方法1还有个优点,那就是能够保留ExpressionSet的结构。既可以进行后续的针对ExpressionSet的分析,也可以提取表达矩阵。

不过,findLargest函数需要引用芯片注释包,因此如果bioconductor中没有对应的芯片注释包的话,是不能使用findLargest函数的。

使用上文的ALL数据作为例子。使用统计量IQR最大值作为合并探针的标准。统计量IQR根据每个探针在所有样本中的表达值计算。

library(ALL)
data(ALL)
library(hgu95av2.db)
library(genefilter)
IQRS <- apply(ALL, 1, IQR) #计算统计量IQR
probenames <- findLargest(rownames(ALL), testStat = IQRS, data = "hgu95av2.db")
#返回IQR值最大的探针名称
ALL <- ALL[probenames, ] #重复探针中只留下统计量IQR最大的探针

稍微解释一下findLargest函数的用法。rownames(ALL)表示探针的名称,testStat = IQRS 表示使用IQRS作为探针统计数据,data = "hgu95av2.db"表示使用hgu95av2.db包识别重复探针。如果想用最大值进行合并的话,将IQRS <- apply(ALL, 1, IQR)替换为MAXS <- apply(ALL, 1, max)probenames <- findLargest(rownames(ALL), testStat = IQRS, data = "hgu95av2.db")替换为probenames <- findLargest(rownames(ALL), testStat = MAXS, data = "hgu95av2.db")即可。

参考:

1、回顾基因表达芯片分析(数据分析)

芯片数据分析步骤7 合并重复探针相关推荐

  1. 芯片数据分析步骤6 探针注释

    注释探针 注释探针的原因 为了防止非特异性结合造成的干扰,芯片厂商往往会使用多个探针检测同一个基因的表达.因此,芯片厂商不会使用基因名作为探针的名称,而是使用自己定义的探针名称.要合并重复探针,我们必 ...

  2. 数据挖掘学习笔记——GEO数据库:芯片数据分析

    数据挖掘 数据挖掘学习笔记--GEO数据库:芯片数据分析 文章目录 数据挖掘 一.芯片基础知识 1.1.背景 二.GEO数据库概述 2.1.基础简介 2.2.检索页面展示 三.GSE项目的三种下载方式 ...

  3. 【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 ...

  4. 比较两组数据的差异用什么图更直观_芯片数据分析中常见的一些图的作用

    今天给大家讲讲芯片数据分析中常见的一些图的作用,让大家伙儿知道它们在BB些啥. 箱式图(Box plot) 基因芯片的原始数据是需要进行标准化处理的,主要目的是消除由于实验技术(如荧光标记效率.扫描参 ...

  5. 甲基化系列 3. 甲基化芯片数据分析完整版(ChAMP)

    点击关注,桓峰基因 桓峰基因 生物信息分析,SCI文章撰写及生物信息基础知识学习:R语言学习,perl基础编程,linux系统命令,Python遇见更好的你 104篇原创内容 公众号 桓峰基因的教程不 ...

  6. 高通量芯片数据分析:转录组芯片数据分析

    利用R的bioconductor包进行分析.由于安装的是R3.5以上版本所以实际用的是用biomanager指令,其他基本一样. 不同的包有各类坑,具体可以查阅bioconductor官网寻找解决办法 ...

  7. 芯片数据分析笔记【05】 | 处理芯片数据的R包

    芯片数据分析笔记[01] | 基因芯片的基本原理 芯片数据分析笔记[02] | 芯片数据库 芯片数据分析笔记[03] | GEO数据库使用教程及在线数据分析工具 芯片数据分析笔记[04] | Arra ...

  8. iphone合并重复联系人_如何清理iPhone上的重复联系人

    iphone合并重复联系人 If you use your iPhone to manage multiple address books from work, school, or your per ...

  9. 短文本合并重复(去重)的简单有效做法

    短文本合并重复(去重)的简单有效做法 - 旁观者 - 博客园 短文本合并重复(去重)的简单有效做法

  10. 用R和BioConductor进行基因芯片数据分析(四):芯片内归一化

    接前一篇: 用R和BioConductor进行基因芯片数据分析(三):计算median 归一化是从normalization翻译过来的.归一化的目的是使各次/组测量或各种实验条件下的测量可以相互比较, ...

最新文章

  1. 第三十一课.矩阵胶囊与EM路由
  2. C/C++ 语言的常用开发工具下载
  3. java 特殊符号正则_java利用正则表达式处理特殊字符的方法实例
  4. 消息队列系列二(IOT中消息队列的应用)
  5. Scrapy框架的学习(12. scrapy中的模拟登陆,发送post请求模拟登陆)
  6. nagios报Connection refused by host的解决办法
  7. Shell脚本对Linux进行文件校验
  8. STL运用的C++技术(6)——函数对象
  9. QT 010 Qt 4.2 在线手册含UML图解释 User's Guide Documentation
  10. C++中 * *的用法与区别----实操才能看明白
  11. Python计算组合数生成杨辉三角形
  12. TensorFlow 学习(九)—— 初始化函数(概率分布函数 api、常数生成函数)
  13. 开课吧Java课堂:如何将用户定义的类存储于Collection中
  14. ImportError: No module named managers
  15. php取excel中的值,在Php Excel中使用列名获取单元格值
  16. 敏捷开发中XP与SCRUM的区别
  17. Python说文解字_Python之多任务_03
  18. 通过释放cache内存解决ubuntu死机问题
  19. 值得收藏,分享3个的 Python 实战项目
  20. 一北大毕业生的返乡报告:家乡面目全非 备感无力

热门文章

  1. 只需5步,新手小白如何创建实用的在线员工手册?
  2. 一名【合格】前端工程师的自检清单
  3. html怎么把盒子做成超链接,把整个DIV变成超链接
  4. 百合网推试爱机器人,人工智能+婚恋的起点?
  5. 白嫖JetBrains全家桶第二波与第三波
  6. 电脑局域网所有IP及对应MAC地址查询
  7. Python爬虫技术及PyQt5界面编程实现12306火车票查询
  8. [转载]ssget 用法详解 by yxp
  9. I.MX6Q(TQIMX6Q)--资料汇总
  10. vue封装了个日历组件(包含农历,节日)