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

2023-10-27

用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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • linux,Centos7,yum安装的curl无法正常使用

    root centos yum y install curl Loaded plugins fastestmirror langpacks Loading mirror speeds from cached hostfile Package
  • adb连接报错:This adb server's $ADB_VENDOR_KEYS is not set Try 'adb kill-server' if that seems wrong.

    Microsoft Windows 版本 6 1 7601 版权所有 2009 Microsoft Corporation 保留所有权利 C Users Administrator gt adb install C Users Admini
  • 【备忘】Unity IOS 覆盖安装后进游戏黑屏

    情景 unity LuaFrameWork UGUI V2 把资源打在包内用于过审 上架appStore后 覆盖安装下进游戏出现黑屏情况 上一版本是打小包过审 即大部分资源在进游戏后下载 推测 查看项目代码后 发现资源路径没有按版本号区分
  • 进行人工智能机器人研发,应该选择哪种编程语言?

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 这个问题大多数新的机器人专家在他们的职业生涯中至少会思考一次 不幸的是 这也是一个没有直接答案的问题 如果你在 Stack Overflow Quora Trossen R
  • 运行springmvc时出现如下错误org.springframework.web.servlet.DispatcherServlet noHandlerFound

    出现错误 八月 12 2018 10 46 42 上午 org springframework web servlet DispatcherServlet noHandlerFound 警告 No mapping found for HTT
  • 飞书小程序开发

    1 tt showModal后跳转页面 跳转路径要为绝对路径 相对路径跳转无响应 2 手机息屏后将不再进入onload 生命周期 直接进入onshow 生命周期 onLoad 在页面初始化的时候触发 一个页面只调用一次 onShow 在切入
  • 杀死“比尔”

    所有人有一个初始的生命值 一个警官要杀一个人则该人的生命值减p 其他人则减Q 最少要杀多少次才可以把所有人杀掉 百度笔试手速太慢 没敲上去 可怜 include
  • 【观察】浪潮K1 Power:产业升级换挡提速,关键计算保驾护航

    今天 国家对数字经济给予了前所未有的高度重视 在 十四五 规划中 国家就明确提出了要将数字经济核心产业增加值占GDP的比重从7 8 提高到10 这也意味着未来整个计算产业将会迎来更大的需求 而算力也将成为数字经济时代的核心生产要素 在此过程
  • LeetCode 150. 逆波兰表达式求值

    题目链接 150 逆波兰表达式求值 遍历所有元素 如果当前元素是整数 则压入栈 如果是运算符 则将栈顶两个元素弹出做相应运算 再将结果入栈 最终表达式扫描完后 栈里的数就是结果 数组模拟栈 class Solution public int
  • Redis高级之IO多路复用和epoll(十二)

    nginx 的反向代理也是采用了IO多路复用 1 是什么 I O 网络 I O 多路 多个客户端连接 连接就是套接字描述符 即socket 或者 channel 指的是多条 TCP 连接 复用 用一个进程来处理多条的连接 使用单进程就能实现
  • 贪心算法三个经典例题

    贪心算法的三个经典例题 A Saruman s Army 题目描述 Saruman the White must lead his army along a straight path from Isengard to Helm s Dee
  • JVM:常用的四种垃圾回收机制

    1 CMS Concurrent Mark Sweep 并行 标记清除 老年代垃圾回收机制 cms是一个基于标记 清除 算法的综合多种算法的老年代垃圾回收器 适用场景 重视服务器响应速度 要求系统停顿时间最短 这里要说明下 这是一个老年代算
  • posefs1.perception.cs.cmu.edu 无法访问

    我尝试练习openpose时 发现运行的代码缺乏coffee的model 需要执行models 下的bat或sh 但是 posefs1 perception cs cmu edu 无法访问 从Kaggle上下载 https www kagg
  • Java学到什么程度才能叫精通?

    把下面这些内容掌握以后 你就可以自诩精通Java后端了 1 计算机基础 这部分内容是计算机相关专业同学的课程 但是非科班的小伙伴 譬如在下 就需要花时间恶补了 特别 是计算机网络 操作系统 数据结构这三门课程 至于编译原理 个人大概懂一点就
  • 段页式存储及分段分页优缺点分析,对比(王道考研_操作系统)

    分段分页优缺点分析 段页式管理 将进程按照逻辑模块分段 再将各段分页 再将内存空间分为大小相同的页框 最后将各个页装入各个内存块中 基本分段存储管理 与分页相比 离散分配时所分配的地址空间的基本单位不同 定义 进程的地址空间 按照程序的自身
  • STL中常用的排序算法

    merge 以下是排序和通用算法 提供元素排序策略 merge 合并两个有序序列 存放到另一个序列 例如 vecIntA vecIntB vecIntC是用vector
  • Git 版本回退与前进(03)

    现在 你已经学会了修改文件 然后把修改提交到Git版本库 现在 再练习一次 修改readme txt文件如下 Git is a distributed version control system Git is free software
  • 理解attention的image to caption(图片的文字描述)

    更多查看 https github com B C WANG AI Storage 4 1 理解attention的image to caption 图片的文字描述 4 1 1 一 一个简单模型 Encoder 使用预训练的CNN进行fin
  • flex局部的知识总结(转载)

    版权声明 本文为CSDN博主 Coralpapy 的原创文章 遵循CC 4 0 BY SA版权协议 转载请附上原文出处链接及本声明 原文链接 https blog csdn net Coralpapy article details 120
  • 用limma包的voom方法来做RNA-seq 差异分析

    用limma包的voom方法来做RNA seq 差异分析 大家都知道 这十几年来最流行的差异分析软件就是R的limma包了 但是它以前只支持microarray的表达数据 考虑到大家都熟悉了它 它又发了一个voom的方法 让它从此支持RNA