用limma包的voom方法来做RNA-seq 差异分析_limma voom-程序员宅基地

技术标签: r语言  R语言  SCI  开发语言  

用limma包的voom方法来做RNA-seq 差异分析

大家都知道,这十几年来最流行的差异分析软件就是R的limma包了,但是它以前只支持microarray的表达数据。

考虑到大家都熟悉了它,它又发了一个voom的方法,让它从此支持RNA-seq的count数据啦!

大家都知道芯片数据跟RNA-seq数据的本质就是value的分布不一样,所以各种针对RNA-seq的差异分析包也就是提出来一个新的normalization方法而已。

而我们limma本身就提出了一个voom的方法来对RNA-seq数据进行normalization

使用这个包也需要三个数据:

表达矩阵

分组矩阵

差异比较矩阵

用法与limma一模一样的,只是多了一个normalization而已。

读取自己的数据
一般我们会自己读取表达矩阵和分组信息,下面是一个例子:

options(warn=-1)
suppressMessages(library(DESeq2))
suppressMessages(library(limma))
suppressMessages(library(pasilla))
data(pasillaGenes)
exprSet=counts(pasillaGenes)
head(exprSet)  ##表达矩阵如下
##             treated1fb treated2fb treated3fb untreated1fb untreated2fb
## FBgn0000003          0          0          1            0            0
## FBgn0000008         78         46         43           47           89
## FBgn0000014          2          0          0            0            0
## FBgn0000015          1          0          1            0            1
## FBgn0000017       3187       1672       1859         2445         4615
## FBgn0000018        369        150        176          288          383
##             untreated3fb untreated4fb
## FBgn0000003            0            0
## FBgn0000008           53           27
## FBgn0000014            1            0
## FBgn0000015            1            2
## FBgn0000017         2063         1711
## FBgn0000018          135          174
(group_list=pasillaGenes$condition)
## [1] treated   treated   treated   untreated untreated untreated untreated
## Levels: treated untreated
##这是分组信息,7个样本,3个处理的,4个未处理的对照!

另外一个例子是从airway里面得到表达矩阵和分组信息

library(airway)
data(airway)
exprSet=assays(airway)$counts  ## 表达矩阵
group_list=colData(airway)$dex ## 分组信息

第一步:构建分组矩阵

suppressMessages(library(limma))
design <- model.matrix(~factor(group_list))
colnames(design)=levels(factor(group_list))
rownames(design)=colnames(exprSet)
design
##              treated untreated
## treated1fb         1         0
## treated2fb         1         0
## treated3fb         1         0
## untreated1fb       1         1
## untreated2fb       1         1
## untreated3fb       1         1
## untreated4fb       1         1
## attr(,"assign")
## [1] 0 1
## attr(,"contrasts")
## attr(,"contrasts")$`factor(group_list)`
## [1] "contr.treatment"
第二步:根据分组信息和表达矩阵进行normalization
这里构建了一个对象 An object of class “EList”

v <- voom(exprSet,design,normalize="quantile")
## 下面的代码如果你不感兴趣不需要运行,免得误导你
## 就是看看normalization前面的数据分布差异
#png("RAWvsNORM.png")
exprSet_new=v$E
par(cex = 0.7)
n.sample=ncol(exprSet)
if(n.sample>40) par(cex = 0.5)
cols <- rainbow(n.sample*1.2)
par(mfrow=c(2,2))
boxplot(exprSet, col = cols,main="expression value",las=2)
boxplot(exprSet_new, col = cols,main="expression value",las=2)
hist(exprSet)
hist(exprSet_new)

在这里插入图片描述

#dev.off()

可以很明显看到normalization前后数据分布差异非常大!

第三步:做差异分析,提取差异分析结果 这里不需要差异比较矩阵了,因为我的分组矩阵表明样本就分成两组,直接提取coef=2的数据即可

fit <- lmFit(v,design)
fit2 <- eBayes(fit)
tempOutput = topTable(fit2, coef=2, n=Inf)
DEG_voom = na.omit(tempOutput)
head(DEG_voom)
##                  logFC  AveExpr         t      P.Value    adj.P.Val
## FBgn0029167  2.1608689 7.880589  41.19142 5.195806e-08 0.0007518331
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
## FBgn0003137 -0.9560776 8.421903 -29.97211 2.920473e-07 0.0021129620
## FBgn0003748 -1.0385933 6.395990 -23.78787 1.020682e-06 0.0049230892
## FBgn0035085  2.5190255 5.221183  21.01339 1.993995e-06 0.0058809216
## FBgn0050185 -0.4886279 5.487547 -19.95422 2.635106e-06 0.0058809216
## FBgn0015568 -1.1040979 3.922438 -19.96954 2.624231e-06 0.0058809216
##                    B
## FBgn0029167 9.065020
## FBgn0003137 7.800063
## FBgn0003748 6.652695
## FBgn0035085 5.870585
## FBgn0050185 5.734162
## FBgn0015568 5.557560

差异分析结果就不解释啦!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_46587777/article/details/124923211

智能推荐

springboot停车场车辆定位管理可视化分析系统的设计与实现 毕业设计-附源码101702-程序员宅基地

文章浏览阅读111次。该系统采用Springboot框架、JSP技术、Ajax技术进行业务系统的编码及其开发,实现了本系统的全部功能。本系统采取组件化的方式对系统进行拆分,并对数据库中各个表的增删查改、表与表之间的约束关系进行分析与设计,最终实现符合用户需求功能的商业级应用。

vue页面报错,TypeError: Cannot read property ‘_wrapper‘ of undefined_页面报错vue.min.js:6-程序员宅基地

文章浏览阅读2.9k次。vue页面报错崩溃卡死,报了这个错TypeError: Cannot read property '_wrapper' of undefined at Qr (vue.min.js:6) at rt (vue.min.js:6) at Array.ei (vue.min.js:6) at x (vue.min.js:6) at vue.min.js:6 at x (vue.min.js:6) at vue.min.js:6 at x (vue_页面报错vue.min.js:6

选择排序算法-程序员宅基地

文章浏览阅读153次。大家好,我是Yang。欢迎大家来到我的博客,希望能和大家多多交流。地址:https://blog.csdn.net/Ziyang1060。如果大家觉得看完之后能有点收获,不妨点个赞来庆祝庆祝~选择排序算法算法复杂度:O(n2n^2n2)void selection_sort(int arr[], int size){ int min_index;//最小值的索引 int i, j;...

启用Django服务时报错:django.core.exceptions.ImproperlyConfigured: The INSTALLED_APPS setting must be a list...-程序员宅基地

文章浏览阅读844次。启用Django服务时(Python manage.py runserver),报错:django.core.exceptions.ImproperlyConfigured: The INSTALLED_APPS setting must be a list or a tuple.原因:Django项目XXX目录下setting.py文件中INSTALLED_APPS ..._django.core.exceptions.improperlyconfigured: the installed_apps setting must

SingleTickerProviderStateMixin-程序员宅基地

文章浏览阅读2.9k次。Provides a single [Ticker] that is configured to only tick while the current tree is enabled, as defined by [TickerMode].To create the [AnimationController] in a [State] that only uses a single [AnimationController], mix in this class, then passvsync: t._singletickerproviderstatemixin

ftp服务器与共享文件对比,ftp服务器与共享的区别-程序员宅基地

文章浏览阅读4.9k次。ftp服务器与共享的区别 内容精选换一换ר��������Dedicated Host��DeH������ָ�û��ɶ����ר������������Դ�������Խ��Ʒ���������������ר�������ϣ��������Ը����ԡ���ȫ�ԡ����ܵĸ���Ҫ��ͬʱ������������Ǩ��ҵ����ר������ʱ������ʹ��Ǩ��ǰ�ķ����������..._server u和共享文档的区别

随便推点

Python小白逆袭大神七日打卡营飞桨paddlepaddle_path = 'work/' 'pics/' name '/-程序员宅基地

文章浏览阅读782次。这里写自定义目录标题Python小白逆袭大神七日打卡营全纪录新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入P..._path = 'work/' 'pics/' name '/

px4飞控和qgc通信机制整理_airsim和qground交互-程序员宅基地

文章浏览阅读2k次,点赞6次,收藏31次。连接多架飞机时老是不反应,整理一下飞控和qgc的通信机制吧全部消息整理出来太庞大了,以心跳包做个示例,打字太累,直接贴图,qgc的后面再补上_airsim和qground交互

使用MQTT客户端连接阿里云MQTT服务器_mqtt 客户端发数据 服务器需要开端口吗-程序员宅基地

文章浏览阅读1.2w次,点赞2次,收藏49次。本文是转载的,原文请戳这里查看!~摘要: 物联网全栈教程-从云端到设备(八) 一 这一篇文章零妖老哥将给你展示两个电脑软件的使用方法,将极大地方便你调试与MQTT有关的物联网项目。一个叫MQTT客户端用来模拟设备向云端发送数据和接收云端的数据;另一个叫作MQTT单片机编程小工具,是技小新针对阿里云MQTT服务器连接过程中的痛点,自己编写的一个电脑程序,用来生成连接阿里云MQTT服务器时的账号密码..._mqtt 客户端发数据 服务器需要开端口吗

drivers\base\sys.c_devices_subsys在哪里定义的-程序员宅基地

文章浏览阅读1.9k次。小结: 从sysdev_shutdown函数的实现,我们可以大概的分析一下驱动的层次模式如下:1、最顶层的是system_subsys,所有的cls都挂载在他的链表中2、每一个cls有一个驱动链表,这个驱动链表又可以按sysdev进行一个分组,但是分组只是为了管理方便,驱动还是挂载在cls下的。3、分组虽然只是管理,但是驱动的一些函数执行,比如shutdown,resume等,_devices_subsys在哪里定义的

计算机组装过程中需要注意什么,PCB组装过程中需要注意哪些问题-程序员宅基地

文章浏览阅读137次。PCB是小型玩具或复杂计算机的任何电子设备的组成部分。其复杂的互连组件包括电阻器,二极管,电容器等,使器件能够串联工作。从某种意义上说,它就像是系统的“大脑”。在高可靠性系统中 - 尤其是石油钻井,太空卫星和其他故障可能会产生破坏性后果。这是至关重要的,因此PCB组装过程是完美无缺的,并且组装中常见的错误被注意到。以下是需要注意的一些因素:供应链管理 -为了能够创建高质量的PCB,需要整理的一件事..._组装耳机pcb问题注意事项

retrofit2.adapter.rxjava.HttpException: HTTP 504 Unsatisfiable Request (only-if-cached)_retrofit2.adapter.rxjava2.httpexception: http 504 -程序员宅基地

文章浏览阅读3.9k次。retrofit2.adapter.rxjava.HttpException: HTTP 504 Unsatisfiable Request (only-if-cached)03-31 10:57:21.473 5267-5267/com.moreunion.zhenghao W/System.err: at retrofit2.adapter.rxjava.OperatorMapResp..._retrofit2.adapter.rxjava2.httpexception: http 504 unsatisfiable request (onl

推荐文章

热门文章

相关标签