简单使用limma做差异分析
简单使用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说明文档,有非常详细的说明,非常亲民。
首先我们还是输入count矩阵,这里也跟其他差异分析R包一样,不要输入已经标准化的数据。顺便也加载下edgeR这个R包
library(limma)
library(edgeR)
counts <- read.table(file = "conut_all.txt", sep = "\t", header = TRUE, row.names = 1, stringsAsFactors = FALSE)接着按照文档的说明以及limma包的习惯,我们需要对count进行标准化以及转化为log2的值,这里标准化的方法为TMM,使用edgeR里面的calcNormFactors函数即可
dge <- DGEList(counts = counts)
dge <- calcNormFactors(dge)
logCPM <- cpm(dge, log=TRUE, prior.count=3)这里prior.count值我粗略理解为是为了防止log2()遇到过于小的值
然后跟其他包一样,设置分组信息
group_list <- factor(c(rep("control",2), rep("siSUZ12",2)))
design <- model.matrix(~group_list)
colnames(design) <- levels(group_list)
rownames(design) <- colnames(counts)接下来就是常规的差异分析
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方法,可按照下面的代码流程:
count数据的输入以及数据标准化还是跟之前的一样
counts <- read.table(file = "conut_all.txt", sep = "\t", header = TRUE, row.names = 1, stringsAsFactors = FALSE)
dge <- DGEList(counts = counts)
dge <- calcNormFactors(dge)还是一样需要分组信息
group_list <- factor(c(rep("control",2), rep("siSUZ12",2)))
design <- model.matrix(~group_list)
colnames(design) <- levels(group_list)
rownames(design) <- colnames(counts)接下来进行voom转化
v <- voom(dge, design, plot=TRUE)其实可以不进行TMM标准化,直接用count数据进行voom转化,如:
v <- voom(counts, design, plot=TRUE)最后就是普通的差异分析过程
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做差异分析的更多相关文章
- 简单使用DESeq做差异分析
简单使用DESeq做差异分析 Posted: 五月 06, 2017 Under: Transcriptomics By Kai no Comments DESeq这个R包主要针对count d ...
- 简单使用DESeq2/EdgeR做差异分析
简单使用DESeq2/EdgeR做差异分析 Posted: 五月 07, 2017 Under: Transcriptomics By Kai no Comments DESeq2和EdgeR都 ...
- php求和为s的两个数字(多复制上面写的代码,有利于检查错误)(由浅入深,先写简单算法,做题的话够用就行)
php求和为s的两个数字(多复制上面写的代码,有利于检查错误)(由浅入深,先写简单算法,做题的话够用就行) 一.总结 1.多复制上面写的代码,有利于检查错误 2.一层循环就解决了,前后两个指针,和大了 ...
- [安卓] 18、一个简单的例子做自定义动画按钮和自定义Actionbar
在做安卓UI的时候有时候需自定义具有动画效果的按钮或需要自定义一下actionbar~ 本节用一个简单的demo讲如何自定义具有动画效果的按钮,以及个性化的actionbar 下面是效果: 其中: △ ...
- NGUI之Slider,最简单的方法做进度条。
既然标题是最简单的,那么很多东西就不需要我们自己做了,使用的是NGUI的示例,只针对初学者,接下来让我们来做一个最简单游戏设置里的声音控制. 1.导入NGUI: 2.找到NGUI的Menu示例Demo ...
- 简单封装Redis做缓存
基于Redis封装一个简单的Python缓存模块 0. Docker Redis安装 参考: Get Docker CE for CentOS Docker 安装 Redis 安装Docker时错误s ...
- QML学习笔记(五)— 做一个简单的待做事项列表
做一个简单的QML待做事项列表,能够动态添加和删除和编辑数据 GitHub:八至 作者:狐狸家的鱼 本文链接:QML学习笔记(五)— 做一个待做事项列表 主要用到QML:ListView 效果 全部代 ...
- Hibernate SQLQuery简单实用,做链接查询
工单里面可能有0个告警,一个或多个告警,当工单中没有告警的时候也需要将工单显示出来,所以就需要使用工单和告警的做链接查询,下面是具体实例 表: CREATE TABLE `alarm` ( `id` ...
- java后端实习,从最简单的crud做起
现在就是做ssm框架下的sql语句,主要是select语句,sql语句没什么难的,孰能生巧,趁此机会,把自己的sql基础打扎实,也是一种实习的经验. 1.在子查询中字段的类型不相容怎么办? cast函 ...
随机推荐
- SPSS-非参数检验
非参数检验(卡方(Chi-square)检验.二项分布(Binomial)检验.单样本K-S(Kolmogorov-Smirnov)检验.单样本变量值随机性检验(Runs Test).两独立样本非参数 ...
- openstack 资料
调用流程 https://blog.csdn.net/bill_xiang_/article/details/72909927
- rect用法
//如果创建一个Rect对象rect(100, 50, 50, 100),那么rect会有以下几个功能: rect.area(); //返回rect的面积 5000 rect.size(); //返回 ...
- Mesh.CombineMeshes
[Mesh.CombineMeshes] public void CombineMeshes(CombineInstance[] combine, bool mergeSubMeshes = true ...
- flex-grow
[flex-grow] 指定宽度所占比,如一个flex中有三个item,这三个item的flex-grow均为1,则每个item占比为33.33%,如果一个是1,两个为2,则占比为20%,40%,40 ...
- 五、Singleton 单例模式
需求:保证对象只创建一次 说明: 分为懒汉式.饿汉式,通过是否一开始就创建静态对象.饿汉式需要考虑线程并发的安全 懒汉式: public class Singleton { private stati ...
- PHPActiveRecord 学习一
#连接数据库 <?phprequire_once dirname(__FILE__) . '/../../ActiveRecord.php'; // initialize ActiveRecor ...
- Oracle的regexp_instr函数简单用法
REGEXP_INSTR函数让你搜索一个正则表达式模式字符串.函数使用输入字符集定义的字符进行字符串的计算. 它返回一个整数,指示开始或结束匹配的子位置,这取决于return_option参数的值. ...
- 扩展欧几里得 hdu 1576
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1576 不知道扩展欧几里得的同学可以参考:https://blog.csdn.net/zhjchengf ...
- 51nod 1163 最高的奖励
链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1163 1163 最高的奖励 基准时间限制:1 秒 空间限制:13 ...