RNA-seq 差异分析的点点滴滴(1)

alt

引言

本系列[1])将开展全新的转录组分析专栏,主要针对使用DESeq2时可能出现的问题和方法进行展开。

为何使用未经标准化的计数数据?

DESeq2 工具包在接收输入时,期望得到的是未经处理的原始计数数据,比如从 RNA-seq 或其他高通量测序实验中获得的,这些数据以整数值矩阵的形式呈现。在这个矩阵中,第 i 行第 j 列的数值表示在样本 j 中可以归属于基因 i 的读段数。同样地,对于其他类型的实验,矩阵的行可能代表结合区域(例如 ChIP-Seq 实验)或肽序列(例如定量质谱实验)。

矩阵中的数值应当是未经标准化的读段计数(对于单端 RNA-seq)或片段计数(对于双端 RNA-seq)。RNA-seq 的工作流程中描述了多种制备此类计数矩阵的技术。为 DESeq2 的统计模型提供计数矩阵作为输入非常关键,因为只有原始的计数数据才能准确评估测量的精确度。DESeq2 模型在内部会校正文库大小的影响,因此不应该使用经过转换或标准化的数值,比如按文库大小调整后的计数,作为输入数据。

DESeqDataSet 对象

DESeq2 工具包中,用于存储读取计数和统计分析过程中的中间估计量的类对象是 DESeqDataSet,通常在代码中以 dds 表示。

技术细节上,DESeqDataSet 类扩展了 SummarizedExperiment 包中的 RangedSummarizedExperiment 类。“Ranged” 指的是测定数据的行(即计数)可以与基因组的特定区域(如基因的外显子)相关联。

DESeqDataSet 对象必须关联一个设计公式。这个公式描述了将在模型中使用的变量,通常以波浪号 (~) 开始,后跟用加号 (+) 分隔的变量(如果不是公式形式,系统会自动转换)。设计公式可以在后续更改,但需要重新执行所有差异分析步骤,因为设计公式用于估计离散度和模型的 log2 倍数变化。

注意:为了利用包的默认设置,应将感兴趣的变量放在公式的末尾,并确保对照组水平是第一水平。

接下来,将展示根据在 DESeq2 之前使用的管道不同,构建 DESeqDataSet 的四种方法:

  1. 从转录丰度文件和 tximport 生成
  2. 从计数矩阵生成
  3. 从 htseq-count 文件生成
  4. 从 SummarizedExperiment 对象生成

转录本丰度数据

建议在使用 DESeq2 之前,先采用快速的转录本丰度定量工具,然后通过 tximport导入这些定量数据来创建 DESeq2 所需的基因水平计数矩阵。这种方法允许用户从多种外部软件中导入转录本丰度估计值,包括以下方法:Salmon; Sailfish; kallisto ;RSEM

采用上述方法进行转录本丰度估计的好处包括:(i)这种方法能够校正样本间可能的基因长度变化(例如,由于异构体的不同使用),(ii)其中一些方法(Salmon, Sailfish, kallisto)相比需要创建和存储 BAM 文件的基于比对的方法,速度显著更快,且对内存和磁盘空间的需求更少,以及(iii)可以避免丢弃那些能够与多个具有同源序列的基因对齐的片段,从而提高检测的灵敏度。

请注意,tximport-to-DESeq2 方法使用的是转录本丰度定量器估计的基因计数,而不是标准化计数。

在这里,将展示如何从存储在 tximportData 包中的 Salmon quant.sf 文件导入转录本丰度,并构建一个基因水平的 DESeqDataSet 对象。

library("tximport")
library("readr")
library("tximportData")
dir <- system.file("extdata", package="tximportData")
samples <- read.table(file.path(dir,"samples.txt"), header=TRUE)
samples$condition <- factor(rep(c("A","B"),each=3))
rownames(samples) <- samples$run
samples[,c("pop","center","run","condition")]

##           pop center       run condition
## ERR188297 TSI  UNIGE ERR188297         A
## ERR188088 TSI  UNIGE ERR188088         A
## ERR188329 TSI  UNIGE ERR188329         A
## ERR188288 TSI  UNIGE ERR188288         B
## ERR188021 TSI  UNIGE ERR188021         B
## ERR188356 TSI  UNIGE ERR188356         B

接下来,使用适当的样本列指定文件的路径,并读取一个将转录本与该数据集的基因链接起来的表。

files <- file.path(dir,"salmon", samples$run, "quant.sf.gz")
names(files) <- samples$run
tx2gene <- read_csv(file.path(dir, "tx2gene.gencode.v27.csv"))

使用 tximport 函数导入 DESeq2 所需的量化数据。

txi <- tximport(files, type="salmon", tx2gene=tx2gene)

最后,可以根据样本中的 txi 对象和样本信息构造一个 DESeqDataSet。

library("DESeq2")
ddsTxi <- DESeqDataSetFromTximport(txi,
                                   colData = samples,
                                   design = ~ condition)

这里的ddsTxi对象就可以在下面的分析步骤中用作dds。

Reference
[1]

Source: https://bioconductor.org/packages/release/bioc/vignettes/DESeq2/inst/doc/DESeq2.html

本文由 mdnice 多平台发布

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/8545.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Python初始环境搭建和Pycharm的安装

Python和PyCharm安装步骤 刚学习Python编程&#xff0c;按照书上的方法安装了Python和PyCharm&#xff0c;并做练习。但是今天PyCharm软件忽然不能使用了&#xff0c;不知道什么原因。于是&#xff0c;将这两个软件全部卸载&#xff0c;在网上查找软件安装方法&#xff0c;重新…

云上拼团GO指南——腾讯云博客部署案例,双11欢乐GO

知孤云出岫-CSDN博客 目录 腾讯云双11活动介绍 一.双十一活动入口 二.活动亮点 &#xff08;一&#xff09;双十一上云拼团Go (二&#xff09;省钱攻略 &#xff08;三&#xff09;上云&#xff0c;多类型服务器供您选择 三.会员双十一冲榜活动 (一)活动内容 &#x…

[ 常用工具篇 ] 使用 kali 实现 ARP 攻击 -- arpspoof 实战详解(ARP欺骗-断网攻击中间人攻击)

&#x1f36c; 博主介绍 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 _PowerShell &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 &#x1f389;点赞➕评论➕收藏 养成习…

无人机之飞行管控平台篇

无人机的飞行管控平台是一种基于互联网和物联网技术的智能管理系统&#xff0c;旨在实现对无人机飞行任务的全自动化、全过程化管理。 一、主要功能 飞行计划管理&#xff1a;用户可以通过平台提前设置好无人机的飞行计划&#xff0c;包括起飞时间、航线、飞行高度等信息。平…

C++ 继承

一. 继承的概念与定义 1.1. 继承的概念 继承 (inheritance) 机制是面向对象程序设计 使代码可以复用 的最重要的手段&#xff0c;它允许程序员在 保 持原有类特性的基础上进行扩展 &#xff0c;增加功能&#xff0c;这样产生新的类&#xff0c;称派生类。继承 呈现了面向对象…

【启程Golang之旅】深入理解 Protocol Buffers 及其应用

如果你是 Go 语言的开发者&#xff0c;理解如何在 Go 中使用 Protobuf&#xff0c;将帮助你大幅提升数据传输的效率&#xff0c;并实现更高性能的系统设计。 本篇文章将深入探讨 Go 语言中使用 Protobuf 的基础知识、常见应用以及最佳实践&#xff0c;带你一步步了解如何在项目…

vue3.5+版本 defineProps响应式解构,保留数据响应式

正确写法&#xff1a;直接通过 defineProps 结构可以保留响应式 let {num:numNew} defineProps({num: {} }) console.log(具有响应式,numNew); 错误写法&#xff1a;这样会丢失响应式 const props defineProps({num: {} }) let {num:numNew} props console.log(会丢失响…

直播 鸿蒙5.0面试必修技能之鸿蒙性能优化技术

一&#xff1a;行业分析&#xff1a; PC时代---互联网---移动互联网---大数据/人工智能---物联网 c/c/java/php--- andorid/ios/前端/hadoop(存储)/spark/flink【12-14年】 --- ArkTS 李兴平 hao123.com/ 网站:6w/day 06年 5000w卖给了百度 盛大传奇/ 腾讯 互联…

怎么能更好的通过驾考呢?

充分准备&#xff1a; 提前了解驾考内容和要求&#xff0c;包括理论知识、场地驾驶技能、道路驾驶技能和安全文明驾驶常识等。合理安排学习时间&#xff0c;确保有足够的时间进行学习和练习。理论学习&#xff1a; 认真阅读和理解驾考相关书籍和资料&#xff0c;特别是交通法规…

Notion + Python + scholarly = 超强文献管理助手

摘要&#xff1a;在科研文献管理中&#xff0c;研究人员常常需要维护自己的文献数据库&#xff0c;我使用 Notion-database 作为的文献数据库管理工具&#xff08;开源模板&#xff09;。Notion-based 的方法无法实时更新文章的引用量信息。我结合了 Notion Integration 和 sch…

Git遇到“fatal: bad object refs/heads/master - 副本”问题的解决办法

Git遇到“fatal: bad object refs/heads/master - 副本”问题的解决办法 起源 让我们从一个常见的Git错误开始&#xff1a; fatal: bad object refs/heads/master - 副本这个错误提示通常意味着Git在引用&#xff08;ref&#xff09;中发现了不一致或损坏的数据。引用是Git用…

LinkedIn怎么养号:2024最新养号技巧揭秘

LinkedIn领英作为全球最大的职场社交平台&#xff0c;是跨境外贸企业与潜在客户、业务伙伴和同事进行交流的重要平台。然而&#xff0c;许多人在注册和使用LinkedIn时&#xff0c;常常会遇到账户受限甚至被封的困扰。想要拥有一个安全稳定的LinkedIn账户&#xff0c;养号是必不…

RHCE—web服务器

一、web服务器简介 web服务器一般指的是“网站服务器”&#xff0c;是某种驻留在因特网上的计算机程序&#xff0c;可以向请求终端提供服务&#xff0c;主要功能时存储、处理和传递网页给“客户”&#xff0c;传递内容一般是HTML文档、图像、样式表或脚本等&#xff0c;也可以…

块存储、文件存储和对象存储详细介绍

块存储、文件存储和对象存储介绍 块存储&#xff1a;像跑车&#xff0c;因为它们都能提供快速的响应和高性能&#xff0c;适合需要即时数据访问的场景&#xff0c;比如数据库和虚拟化技术。 文件存储&#xff1a;像货车&#xff0c;因为它们都能承载大量货物&#xff08;文件&…

ARM base instruction -- umaddl

Unsigned Multiply-Add Long multiplies two 32-bit register values, adds a 64-bit register value, and writes the result to the 64-bit destination register. 将两个32位寄存器值相乘&#xff0c;添加一个64位寄存器值&#xff0c;并将结果写入64位目标寄存器。 64-bit…

bossplayersCTF: 1 靶场渗透

靶场&#xff1a;bossplayersCTF: 1 bossplayersCTF: 1 ~ VulnHubhttps://www.vulnhub.com/entry/bossplayersctf-1,375/ 攻击机&#xff1a;kali-linux-2024 第一部分&#xff1a;信息收集 1,将两台虚拟机网络连接都改为NAT模式&#xff0c;并查看靶机的MAC地址 2&#xff0c;…

【linux学习指南】磁盘分区挂载到目录,形成文件系统挂载点

文章目录 &#x1f4dd;前言&#x1f320; 查看系统分区&#x1f309;制作一个大的磁盘块&#xff0c;就当做一个分区&#x1f309;格式化写入文件系统&#x1f309;将分区挂载到指定的目录&#x1f309;在分区重创建文件&#x1f309;卸载分区&#x1f309;分区挂载到目录才能…

STM32CUBEIDE FreeRTOS操作教程(八):queues多队列

STM32CUBEIDE FreeRTOS操作教程&#xff08;八&#xff09;&#xff1a;queues多队列 STM32CUBE开发环境集成了STM32 HAL库进行FreeRTOS配置和开发的组件&#xff0c;不需要用户自己进行FreeRTOS的移植。这里介绍最简化的用户操作类应用教程。以STM32F401RCT6开发板为例&#…

redis 原理篇 25 网络模型 信号驱动IO 及 异步IO

剩下这两种&#xff0c;用得少&#xff0c;快速过一下&#xff0c; 说啥队列太小&#xff0c;这个不是问题&#xff0c;搞个持久化&#xff0c; 说啥队列元素太频繁导致开销大&#xff0c;这个也没问题&#xff0c;搞成批量入队&#xff0c;减少频率&#xff0c;增大吞吐量&am…

某事业单位转型公益二类后岗位梳理项目纪实

某事业单位转型公益二类后岗位梳理项目纪实 ——公益一类事业单位转型二类后&#xff0c;如何优化岗位配置&#xff0c;梳理岗位职责 【客户行业】事业单位 【问题类型】岗位梳理 【客户背景】 某地公证机构于20世纪90年代经批准设立&#xff0c;是该市司法局直属国家公证…