简单使用DESeq2/EdgeR做差异分析
简单使用DESeq2/EdgeR做差异分析
Posted: 五月 07, 2017 Under: Transcriptomics By Kai no Comments
DESeq2和EdgeR都可用于做基因差异表达分析,主要也是用于RNA-Seq数据,同样也可以处理类似的ChIP-Seq,shRNA以及质谱数据。
这两个都属于R包,其相同点在于都是对count data数据进行处理,都是基于负二项分布模型。因此会发现,用两者处理同一组数据,最后在相同阈值下筛选出的大部分基因都是一样的,但是有一部分不同应该是由于其估计离散度的不同方法所导致的。
DESeq2的使用方法:
输入矩阵数据,行名为sample,列名为gene;DESeq2不支持无生物学重复的数据,因此我选择了2个样本,3个生物学重复的数据;并对count data取整(经大神指点,这里需要说明下,我的测试数据readcount是RSEM定量的结果,并不是常见的htseq-count的结果,所以count值会有小数点,而DESeq2包不支持count数有小数点,所以这里需要round取整)。
database_all <- read.table(file = "readcount", sep = "\t", header = T, row.names = 1)
database <- database_all[,1:6]
#type <- factor(c(rep("LC_1",3), rep("LC_2",3)))
database <- round(as.matrix(database))设置分组信息以及构建dds对象
condition <- factor(c(rep("LC_1",3), rep("LC_2",3)))
coldata <- data.frame(row.names = colnames(database), condition)
dds <- DESeqDataSetFromMatrix(countData=database, colData=coldata, design=~condition)使用DESeq函数进行估计离散度,然后进行标准的差异表达分析,得到res对象结果
dds <- DESeq(dds)
res <- results(dds)最后设定阈值,筛选差异基因,导出数据
table(res$padj <0.05)
res <- res[order(res$padj),]
resdata <- merge(as.data.frame(res), as.data.frame(counts(dds, normalized=TRUE)),by="row.names",sort=FALSE)
write.csv(resdata,file = "LC_1_vs_LC_2.csv")
EdgeR的使用方法:
跟DESeq2一样,EdgeR输入矩阵数据,行名为sample,列名为gene;DESeq2不支持无生物学重复的数据,因此我选择了2个样本,3个生物学重复的数据。
exprSet_all <- read.table(file = "readcount", sep = "\t", header = TRUE, row.names = 1, stringsAsFactors = FALSE)
exprSet <- exprSet_all[,1:6]
group_list <- factor(c(rep("LC_1",3), rep("LC_2",3)))设置分组信息,去除低表达量的gene以及做TMM标准化
exprSet <- exprSet[rowSums(cpm(exprSet) > 1) >= 2,]
exprSet <- DGEList(counts = exprSet, group = group_list)
exprSet <- calcNormFactors(exprSet)使用qCML(quantile-adjusted conditional maximum likelihood)估计离散度(只针对单因素实验设计)
exprSet <- estimateCommonDisp(exprSet)
exprSet <- estimateTagwiseDisp(exprSet)寻找差异gene(这里的exactTest函数还是基于qCML并且只针对单因素实验设计),然后按照阈值进行筛选即可
et <- exactTest(exprSet)
tTag <- topTags(et, n=nrow(exprSet))
tTag <- as.data.frame(tTag)
write.csv(tTag,file = "LC_1_vs_LC_2_edgeR.csv")
Summary
以上我主要针对单因素两两比较组进行差异分析,其实DESeq2和EdgeR两个R包都可以对多因素进行差异分析。
DESeq2修改以上代码的分组信息design参数以及在差异分析results函数中添加所选定的分组因素,其他代码基本一样,具体参照DESeq2手册
EdgeR则需要用Cox-Reid profile-adjusted likelihood (CR)方法来估算离散度,y <- estimateDisp(y, design)或者分别使用三个函数(y <- estimateGLMCommonDisp(y, design),y <- estimateGLMTrendedDisp(y, design), )y <- estimateGLMTagwiseDisp(y, design);然后差异表达分析也跟单因素分析不同,主要使用generalized linear model (GLM) likelihood ratio test 或者 quasi-likelihood(QL) F-test,具体代码可以参照EdgeR手册。
简单使用DESeq2/EdgeR做差异分析的更多相关文章
- 简单使用limma做差异分析
简单使用limma做差异分析 Posted: 五月 12, 2017 Under: Transcriptomics By Kai no Comments 首先需要说明的是,limma是一个非常全 ...
- 简单使用DESeq做差异分析
简单使用DESeq做差异分析 Posted: 五月 06, 2017 Under: Transcriptomics By Kai no Comments DESeq这个R包主要针对count d ...
- POJ3185(简单BFS,主要做测试使用)
没事做水了一道POJ的简单BFS的题目 这道题的数据范围是20,所以状态总数就是(1<<20) 第一次提交使用STL的queue,并且是在队首判断是否达到终点,达到终点就退出,超时:(其实 ...
- 简单的用jQuery做遮罩效果
<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8" ...
- 简单介绍aspose-words-18.10-jdk16做导出word
今天在搞那个用aspose words for java做导出word的功能,顺便简单介绍这个怎么用,我有两个版本的破解版,就都做简单介绍怎么用 警告:请勿用于商业用途,仅供学习研究使用,如有任何版权 ...
- 这 3 个 Set 集合的实现有点简单,那来做个总结吧
Set 接口是 Java Collections Framework 中的一员,它的特点是:不能包含重复的元素,允许且最多只有一个 null 元素.Java 中有三个常用的 Set 实现类: Hash ...
- 简单说 用CSS做一个魔方旋转的效果
说明 魔方大家应该是不会陌生的,这次我们来一起用CSS实现一个魔方旋转的特效,先来看看效果图! 解释 我们要做这样的效果,重点在于怎么把6张图片,摆放成魔方的样子,而把它们摆放成魔方的样子,重点在于用 ...
- 简单测试nginx1.90做TCP协议负载均衡的功能
最近工作中需要做TCP层面的负载均衡,以前网站用的反向代理nginx只支持应用层的负载均衡,对于TCP协议是无能为力的,需要使用LVS(linux虚拟服务器). LVS的特点是高性能和极复杂的配置.对 ...
- Qt Model/View理解(二)---构造model(细心研读,发现超简单,Model就是做三件事:返回行数量、列数量、data如何显示。然后把model与view联系起来即可,两个例子都是如此)good
数据是一个集合,显示也是一个集合.例如一篇<西游记>的文章,所有的文字就是数据集合,展示方式就是显示的集合,可以以书本的形式,也可以以电纸书的形式,更可以用视频的方式展现. 下面是将一个二 ...
随机推荐
- Oracle监听程序未启动或数据库服务未注册到该监听
oracle新建数据库的时候提示Could not find appropriate listener for this database要做的操作如下: 1.查看netmanager里面的liste ...
- Illegal access: this web application instance has been stopped already. could not load **
启动tomcat的时候会报这样的错误: Illegal access: this web application instance has been stopped already. could n ...
- Java中的BigDecimal类精度问题
bigdecimal 能保证精度的原理是:BigDecimal的解决方案就是,不使用二进制,而是使用十进制(BigInteger)+小数点位置(scale)来表示小数,就是把所有的小数变成整数,记录小 ...
- 2017面向对象程序设计(JAVA)课程总结
以下就课程结束之后的问题进行简单小结:1. 关于课程教学方法 课程在部分章节的学习中采用了翻转课堂教学,目的是促进同学们借助方便获取的线上线下学习资源进行课前自学,以便于老师留出课堂时间进 ...
- Windows 2012设置允许单个用户连接多个会话的方法
WINDOWS 2012 服务器默认只允许单个用户连接一个远程桌面会话,如果已有连接登陆,另外的连接再登陆会踢掉之前的连接.如果需要两个远程桌面同时连接 找到:HKEY_LOCAL_MACHINE\S ...
- maven项目下出现java.lang.ClassNotFoundException: ContextLoader异常
原因:出现此异常是因为tomcat的webapp目录下没有lib文件. 解决方案: 1.右键点击项目--选择Properties选择Deployment Assembly,在右边点击Add按钮,在弹出 ...
- SpringMVC包括哪些组件
1 映射器 1.1作用:Handlermapping根据url查找Handler 2 适配器 2.1作用:HandlerAdapter执行Handler 3 解析器 3.1作用:View ...
- oracle授予调用存储过程权限
参考 https://blog.csdn.net/h254532693/article/details/45364317 grant execute on PROCEDURENAME to USERN ...
- WPF HyperLink链接下划线隐藏
两种方法: 1.在Grid标签内添加资源样式. <Grid.Resources> <Style TargetType="Hyperlink"> <Se ...
- 贪吃蛇Controller Java实现(二)
package cn.tcc.snake.Controller; import java.awt.Point;import java.awt.event.KeyAdapter;import java. ...