简单使用limma做差异分析

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

首先需要说明的是,limma是一个非常全面的用于分析芯片以及RNA-Seq的差异分析,按照其文章所说:

limma is an R/Bioconductor software package that provides an integrated solution for analysing data from gene expression experiments.

在这我只是对其中的一种情况进行简单的总结,比如这个包可以处理RNA-Seq数据,我简单的以两个比较组进行分组为例,至于其他分组情况,请看limma说明文档,有非常详细的说明,非常亲民。

  1. 首先我们还是输入count矩阵,这里也跟其他差异分析R包一样,不要输入已经标准化的数据。顺便也加载下edgeR这个R包

    library(limma)
    library(edgeR)
    counts <- read.table(file = "conut_all.txt", sep = "\t", header = TRUE, row.names = 1, stringsAsFactors = FALSE)
  2. 接着按照文档的说明以及limma包的习惯,我们需要对count进行标准化以及转化为log2的值,这里标准化的方法为TMM,使用edgeR里面的calcNormFactors函数即可

    dge <- DGEList(counts = counts)
    dge <- calcNormFactors(dge)
    logCPM <- cpm(dge, log=TRUE, prior.count=3)

    这里prior.count值我粗略理解为是为了防止log2()遇到过于小的值

  3. 然后跟其他包一样,设置分组信息

    group_list <- factor(c(rep("control",2), rep("siSUZ12",2)))
    design <- model.matrix(~group_list)
    colnames(design) <- levels(group_list)
    rownames(design) <- colnames(counts)
  4. 接下来就是常规的差异分析

    fit <- lmFit(logCPM, design)
    fit <- eBayes(fit, trend=TRUE)
    output <- topTable(fit, coef=2,n=Inf)
    sum(output$adj.P.Val<0.05)

到这里为止,我们主要是用了limma包里对RNA-Seq差异分析的limma-trend方法,该方法主要适用于样本间测序深度基本保持一致的情况,也就是说两个样本的文库(reads数目)大小相差的不悬殊(说明文档中是默认3倍以内?)

当文库大小在样本间变化幅度相当大的话,可以使用limma的voom方法,可按照下面的代码流程:

  1. count数据的输入以及数据标准化还是跟之前的一样

    counts <- read.table(file = "conut_all.txt", sep = "\t", header = TRUE, row.names = 1, stringsAsFactors = FALSE)
    dge <- DGEList(counts = counts)
    dge <- calcNormFactors(dge)
  2. 还是一样需要分组信息

    group_list <- factor(c(rep("control",2), rep("siSUZ12",2)))
    design <- model.matrix(~group_list)
    colnames(design) <- levels(group_list)
    rownames(design) <- colnames(counts)
  3. 接下来进行voom转化

    v <- voom(dge, design, plot=TRUE)

    其实可以不进行TMM标准化,直接用count数据进行voom转化,如:

    v <- voom(counts, design, plot=TRUE)
  4. 最后就是普通的差异分析过程

    fit <- lmFit(v, design)
    fit <- eBayes(fit)
    output <- topTable(fit, coef=2,n=Inf)
    sum(output$adj.P.Val<0.05)

Summary

Limma长久以来就是一个非常流行的差异分析R包,其内容涉及的非常广泛,用于RNA-Seq只是其内容的一小部分,并且使其处理RNA-Seq数据也使用芯片类似线性模型下,并且按照其说法,limma包比其他基于负二项式分布模型的差异分析R包更加的优秀。

其实差异分析不外乎数据的标准化以及统计模型分析差异两个方面的作用,每个差异分析R包都有其自身的优点,个人理解,取舍在于自己的理解以及想法即可。

其实,自己对于limma包的理解还是比较粗浅的

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

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

    简单使用DESeq做差异分析 Posted: 五月 06, 2017  Under: Transcriptomics  By Kai  no Comments DESeq这个R包主要针对count d ...

  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. zabbix 邮件报警 监控mysql主从

    1)设置邮件模板及邮件服务器 邮箱密码记得写授权密码 2)配置接受报警的邮箱 3)添加报警触发器 配置邮箱服务器 yum -y install mailx yum -y install sendmai ...

  2. pycahrm 基础设置

    一些常用设置: 1. pycharm默认是自动保存的,习惯自己按ctrl + s 的可以进行如下设置:1. file -> Setting -> General -> Synchro ...

  3. R语言-画柱形图

    barplot()函数 1.柱形图 > sales<-read.csv("citysales.csv",header=TRUE) #读取数据 > barplot( ...

  4. platform_device module

    参考: http://www.wowotech.net/linux_kenrel/platform_device.html 1. platform_device 需要在注册 platform_driv ...

  5. SVM参数解析

    一.Opencv中的核函数定义(4种): 1.CvSVM::LINEAR : 线性内核,没有任何向映射至高维空间,线性区分(或回归)在原始特点空间中被完成,这是最快的选择. 2.CvSVM::POLY ...

  6. ScrollReveal.js 用于创建和管理元素进入可视区域时的动画效果,帮助你的网站增加吸引力。

    ScrollReveal.js 用于创建和管理元素进入可视区域时的动画效果,帮助你的网站增加吸引力. 1.http://www.yangqq.com/jstt/css3/2017-08-08/787. ...

  7. Linux系统服务之inetd

    [Linux系统服务之inetd] inetd的角色是作为Telnet和FTP等与网络服务器相关的进程的“超级服务器”.这是一个简单的道理:并不是全部的服务器进程(包括那些接受新的Telnet和FTP ...

  8. 理解 IAAS、PAAS、SAAS

    引用:http://cloud.51cto.com/art/201802/565858.htm 在与相关人士聊云计算的时候,有时会从他们的最终蹦出诸如IaaS.PaaS和SaaS等相关名词,听的人一头 ...

  9. VM虚拟机的配置文件(.vmx)损坏

    为了禁用时间同步,使用sublime修改vmx文件 文件第一行为.encoding = "GBK" 修改完毕,无法打开虚拟机,报 VM虚拟机的配置文件(.vmx)损坏错误 因为su ...

  10. Windows Server2012 R2 安装.NET Framework 3.5失败解决方法

    转载:https://blog.csdn.net/F12138_/article/details/80220698 显示需要指定备用路径,但我没有指定 然后就出现了的失败T T! 由于我无法访问安装盘 ...