简单使用DESeq做差异分析

Posted: 五月 06, 2017  Under: Transcriptomics  By Kai  no Comments

DESeq这个R包主要针对count data,其数据来源可以是RNA-Seq或者其他高通量测序数据。类似地,对于CHIP-Seq数据或者质谱肽段数据也是使用的。

由于DESeq是一个R包,因此使用它需要一点点R基础语法。

  1. 首先需要读入一个数据框,列代表每个sample,行代表每个gene

    database_all <- read.table(file = "readcount", sep = "\t", header = T, row.names = 1)
    database <- database_all[,1:6]

    这里主要对于两两比较的数据,因此我取了数据的前6列,分别是两组样品,每组3个生物学重复

  2. 设定分组信息,也就是样本分组的名称

    type <- factor(c(rep("LC_1",3), rep("LC_2",3)))

    我这里是样品1是LC_1,样品2是LC_2

  3. 由于DESeq包要求接下来的count data必须要整数型,因此我们需要对数据进行取整,然后将数据database和分组信息type读入到cds对象中

    database <- round(as.matrix(database))
    cds <- newCountDataSet(database,type)
  4. 接下里对于不同类型的数据要进行不同的处理,可以粗略分为有生物学重复数据、有部分生物学重复数据以及无生物学重复数据

    4.1 有生物学重复

    cds <- estimateSizeFactors(cds)
    cds <- estimateDispersions(cds)
    res <- nbinomTest(cds,"LC_1","LC_2")

    其通过estimate the dispersion并对count data进行标准化,然后得到每个gene做T test检验

    4.2 对于部分样品有生物学重复

    cds <- estimateSizeFactors(cds)
    cds <- estimateDispersions(cds)
    res <- nbinomTest(cds,"LC_1","LC_2")

    其步骤跟有上述的一样的,DESeq会根据有生物学重复的样品来estimate the dispersion,当然要保证unreplicated condition does not have larger variation than the replicated one

    4.3 对于没有生物学重复

    cds <- estimateDispersions(cds, method="blind", sharingMode="fit-only" )
    res <- nbinomTest(cds,"LC_1","LC_2")

    注意参数method=”blind” 和 sharingMode=”fit-only”即可

  5. 最后就是查看符合阈值的差异基因有多少个即可,然后将结果输出到csv文件中方便查看

    table(res$padj <0.05)
    res <- res[order(res$padj),]
    sum(res$padj<=0.01,na.rm = T)
    write.csv(resdata,file = "LC_1_vs_LC_2_DESeq.csv")

Summary

DESeq在前几年的文章中经常被使用,但是现在有了其升级版DESeq2,后者相比前者对于犯第一类错误卡的并不是那么严格了,所以在同样的padj的阈值下,筛选到的差异基因的数目也会多一点。

并且上述中,我都只使用nbinomTest来获得由显著差异的gene,其实DESeq包还提供了其他检验方法,比如nbinomGLMTest函数,具体可以查看DESeq文档,还有其他对应对因素分析的使用方法。

简单使用DESeq做差异分析的更多相关文章

  1. 简单使用limma做差异分析

    简单使用limma做差异分析 Posted: 五月 12, 2017  Under: Transcriptomics  By Kai  no Comments 首先需要说明的是,limma是一个非常全 ...

  2. 简单使用DESeq2/EdgeR做差异分析

    简单使用DESeq2/EdgeR做差异分析 Posted: 五月 07, 2017  Under: Transcriptomics  By Kai  no Comments DESeq2和EdgeR都 ...

  3. php求和为s的两个数字(多复制上面写的代码,有利于检查错误)(由浅入深,先写简单算法,做题的话够用就行)

    php求和为s的两个数字(多复制上面写的代码,有利于检查错误)(由浅入深,先写简单算法,做题的话够用就行) 一.总结 1.多复制上面写的代码,有利于检查错误 2.一层循环就解决了,前后两个指针,和大了 ...

  4. [安卓] 18、一个简单的例子做自定义动画按钮和自定义Actionbar

    在做安卓UI的时候有时候需自定义具有动画效果的按钮或需要自定义一下actionbar~ 本节用一个简单的demo讲如何自定义具有动画效果的按钮,以及个性化的actionbar 下面是效果: 其中: △ ...

  5. NGUI之Slider,最简单的方法做进度条。

    既然标题是最简单的,那么很多东西就不需要我们自己做了,使用的是NGUI的示例,只针对初学者,接下来让我们来做一个最简单游戏设置里的声音控制. 1.导入NGUI: 2.找到NGUI的Menu示例Demo ...

  6. 简单封装Redis做缓存

    基于Redis封装一个简单的Python缓存模块 0. Docker Redis安装 参考: Get Docker CE for CentOS Docker 安装 Redis 安装Docker时错误s ...

  7. QML学习笔记(五)— 做一个简单的待做事项列表

    做一个简单的QML待做事项列表,能够动态添加和删除和编辑数据 GitHub:八至 作者:狐狸家的鱼 本文链接:QML学习笔记(五)— 做一个待做事项列表 主要用到QML:ListView 效果 全部代 ...

  8. Hibernate SQLQuery简单实用,做链接查询

    工单里面可能有0个告警,一个或多个告警,当工单中没有告警的时候也需要将工单显示出来,所以就需要使用工单和告警的做链接查询,下面是具体实例 表: CREATE TABLE `alarm` ( `id` ...

  9. java后端实习,从最简单的crud做起

    现在就是做ssm框架下的sql语句,主要是select语句,sql语句没什么难的,孰能生巧,趁此机会,把自己的sql基础打扎实,也是一种实习的经验. 1.在子查询中字段的类型不相容怎么办? cast函 ...

随机推荐

  1. 在linux和Mac中访问某个文件夹中所有的文件

    在linux和Mac中访问某个文件夹中所有的文件——输出所有的文件名 #include <stdio.h> #include <dirent.h> int main() { s ...

  2. 1.5.6、CDH 搭建Hadoop在安装之前(定制安装解决方案---使用Cloudera Manager模板创建CDH群集)

    使用Cloudera Manager模板创建CDH群集 您可以通过从Cloudera Manager管理的现有CDH群集导出群集模板来创建新的CDH群集.然后,您可以修改模板并使用它在新的主机集上创建 ...

  3. Realtime Rendering 1.1

    [Realtime Rendering 1.1] 1.A linear transform is one that preserves vector addition and scalar multi ...

  4. clearfix原理

    [clearfix原理] .clearfix:after { <----在类名为“clearfix”的元素内最后面加入内容: content: "."; <----内容 ...

  5. frame嵌套页面元素的定位

    这里当出现页面嵌套的时候怎么定位?frame就是对于嵌套页面的定位,今天具体说一下 前期准备工作:先编写一个HTML网页,带有嵌套的,方便我们在案例中使用按照如下截图的代码编写就好了,然后保存为HTM ...

  6. EF CodeFirst学习笔记003--如何创建表

    参考: http://www.cnblogs.com/Wayou/archive/2012/09/20/EF_CodeFirst.html webconfig中修改: <connectionSt ...

  7. eclipse中没有tomcat小猫

    安装了tomcat,按网上的说明也使用了tomcatPluginV331 配置文件,还是没有小猫,后来我发现,网上的tomcatPluginV331 针对eclipse 4.4版本,所以应该是插件的版 ...

  8. RocketMQ-quickstart(批量消费)

    一.专业术语 Producer 消费生产者,负责产生消息,一般由业务系统负责产生消息 Consumer 消息消费者,负责消费消息,一般是后台系统负责异步消费 Push Consumer Consume ...

  9. 专项测试——移动app安装包检测

    一.背景和现状 安装包的重要性无需多提,针对安装包质量控制越来越严格和规范,包括证书.文件大小.安装成功率等,APP的证书及混淆是影响APP的安装成功率及代码安全性的很大因素,随着功能迭代,安装包也会 ...

  10. 【jquery】checkbox

    jquery操作checkbox 模拟选中: $('#aaa').prop('checked', true); 模拟取消选中: $('#aaa').prop('checked', false); 其它 ...