RNA-seq 详细教程:分析准备(3)

news2025/1/13 13:55:17

学习目标

  • 了解 RNA-seq 和差异表达基因的分析流程
  • 了解如何设计实验
  • 了解如何使用 R 语言进行数据分析

1. 简介

在过去的十年中,RNA-seq 已成为转录组差异表达基因和 mRNA 可变剪切分析不可或缺的技术。正确识别哪些基因或转录本在特定条件下的表达情况,是理解生物反应过程的关键。

在本教程中,将借助许多R包,带你进行一个完整的 RNA-seq 分析过程。将从读取数据开始,将伪计数转换为计数,执行数据分析以进行质量评估并探索样本之间的关系,执行差异表达分析,并在执行下游功能分析之前直观地查看结果。下面是流程图。

workflow
workflow

2. 数据集

本教程将使用Kenny PJ et al, Cell Rep 2014[1] 中的一部分数据进行演示。实验是在 HEK293F细胞中进行的,这些细胞,进行了MOV10基因的转染,或敲除了 MOV10基因,使得 MOV10基因的表达将发生变化。具体情况如下:

处理123
MOV10 geneover expressionknock downIrrelevant siRNA
过表达敲除对照

重复的情况如下图:

replicates
replicates

使用这些数据,我们将探究 MOV10 基因表达出现不同的转录模式。此数据集的原始序列是从 Sequence Read Archive (SRA)[2] 获得的。然后经过之前介绍的工具,进行处理。所有的操作都是在 (Linux/Unix) 环境进行的。

MOV10:是一种 RNA 解旋酶,在 microRNA 通路的背景下与性别相关发育有关。

3. 问题

  1. MOV10 基因的表达变化会产生什么影响?
  2. 变化之间是否有共同的特征?

4. 配置

打开 RStudio 并为此分析创建一个新项目。

  1. 转到 File 菜单并选择 New Project

  2. 选择 New Directory ,然后创建 DEanalysis目录。

  3. RStudio 会自动打开该项目。

使用 getwd(),检查是否在正确的工作目录中。返回的结果应该是:path/DEanalysis

(考虑到每个人的路径不同,因此只需要最后是/DEanalysis即可)。在您的工作目录中,创建两个新目录:metaresults

现在我们需要获取用于分析的文件:Mov10[3],点击即可下载(不能下载的,可以在文末链接获取)。下载 zip 文件后,您需要解压它。将创建一个 data 目录,其中的子目录对应于我们数据集中的每个样本。

接下来,我们将下载annotation file 用于将转录本标识符转换为基因名称(如下图)。此文件是从 RAnnotationHub 得到的(后续将介绍如何获取过程)。

annotation file
annotation file

然后用 RStudio 打开之前的 DEanalysis目录,创建一个 de_script.R 文件,写入下面的注释,并保存。

## Gene-level differential expression analysis using DESeq2
## 使用 DESeq2 进行差异表达基因分析

完成以上步骤后,最后的工作目录如下图:

working directory
working directory

5. 加载包

分析将使用几个 R 包,一些是从 CRAN 安装的,另一些是从 Bioconductor 安装的。要使用这些包,需要加载包。将以下内容添加到脚本中。

library(DESeq2)
library(tidyverse)
library(RColorBrewer)
library(pheatmap)
library(DEGreport)
library(tximport)
library(ggplot2)
library(ggrepel)

6. 数据导入

Salmon 的主要输出是一个 quant.sf 文件,数据集中的每个样本都有一个这样的文件。该文件如下图所示:

quant.sf
quant.sf
  • 内容如下
  1. 转录本标识符
  2. 转录本长度
  3. 有效长度( effective length
  4. TPM( transcripts per million),使用有效长度计算
  5. 估计的计数

effective length:

The sequence composition of a transcript affects how many reads are sampled from it. While two transcripts might be of identical actual length, depending on the sequence composition we are more likely to generate fragments from one versus the other. The transcript that has a higer likelihood of being sampled, will end up with the larger effective length. The effective length is transcript length which has been “corrected” to include factors due to sequence-specific and GC biases.

将使用 tximport 包来为 DESeq2 准备 quant.sf文件。需要做的第一件事是创建一个变量,其中包含每个 quant.sf 文件的路径。然后将名称添加到我们的 quant 文件中,这将使我们能够轻松区分最终输出矩阵中的样本。

## 列出所有文件
samples <- list.files(path = "./data", full.names = T, pattern="salmon$")

## 获取文件名和路径的向量
files <- file.path(samples, "quant.sf")

## 为每个文件单独命名
names(files) <- str_replace(samples, "./data/""") %>% 
                str_replace(".salmon""")

Salmon 索引是使用 Ensembl ID 列出的转录序列生成的,但 tximport 需要知道这些转录本来自哪些基因。我们将使用下载的 annotation file 来提取转录本的基因信息。

# 加载注释文件
tx2gene <- read.delim("tx2gene_grch38_ens94.txt")

# 查看
tx2gene %>% View()

tx2gene 是一个3列的 data frame,包含:转录本ID;基因ID;基因symbol

tximport() 函数从各种外部软件(例如 SalmonKallisto)导入转录水平计数,并汇总到基因水平或输出转录水平矩阵。有可选的参数来使用出现在 quant.sf 文件中的丰度估计值或计算替代值。

对于我们的分析,需要基因水平的非标准化或“原始”计数估计来执行 DESeq2 分析。由于基因计数矩阵是默认值,因此我们只需修改一个附加参数即可指定获取“原始”计数值。 countsFromAbundance 的选项如下:

  • no(默认):这将采用 TPM 中的值(作为我们的缩放值)和 NumReads(作为我们的“原始”计数)列,并将其折叠到基因级别。
  • scaledTPM:这是将 TPM 放大到文库大小作为“原始”计数。
  • lengthScaledTPM:这用于从 TPM 生成“原始”计数表。 “原始”计数值是通过使用 TPMx featureLength x 文库大小生成的。这些代表与原始计数在同一尺度上的数量。

TPM 计算过程:

  1. reads per kilobase (RPK):将读取计数除以每个基因的长度(以千碱基为单位)

  2. “per million” scaling factor:计算样本中的所有 RPK 值并将此数字除以 1,000,000。

  3. 将 RPK 值除以“per million” scaling factor

# 运行 `tximport`
txi <- tximport(files, type="salmon", tx2gene=tx2gene[,c("tx_id""ensgene")], countsFromAbundance="lengthScaledTPM")

7. 数据检视

txi 对象是一个简单的列表,其中包含丰度、计数和长度的矩阵。另一个列表元素 countsFromAbundance 携带 tximport 中使用的字符参数。长度矩阵包含每个基因的平均转录本长度,可用作基因水平分析的偏移量。

attributes(txi)

$names
[1"abundance"           "counts"              "length"        [4"countsFromAbundance"

我们将按原样使用 txi 对象作为 DESeq2 的输入,但会将其保存到下一课。现在让我们看一下计数矩阵。你会注意到有十进制值,所以让我们四舍五入到最接近的整数并将其转换为 dataframe

# 查看 count
txi$counts %>% View()

# 将 count 写入到对象
data <- txi$counts %>% 
  round() %>% 
  data.frame()

欢迎Star -> 学习目录

更多教程 -> 学习目录


参考资料

[1]

dataset: http://www.ncbi.nlm.nih.gov/pubmed/25464849

[2]

SRA: https://www.ncbi.nlm.nih.gov/sra/?term=SRP029367

[3]

数据: https://www.dropbox.com/s/oz9yralwbtphw8u/data.zip?dl=1

本文由 mdnice 多平台发布

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

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

相关文章

【FreeRTOS(四)】显示任务详细信息

文章目录显示任务详细信息 vTaskList代码示例显示任务详细信息 vTaskList 通过 vTaskList来协助分析操作系统当前 task 状态&#xff0c;以帮助优化内存&#xff0c;帮助定位栈溢出问题。 void vTaskList( char *pcWriteBuffer );parameterdescriptionpcWriteBuffer保存任务状态…

11.21~11.28日学习总结

首先这一周&#xff0c;主要进行的几个事情。 1.在星期一~星期二图书报账的相关事情处理已经完毕&#xff0c;记录了现在图书报账的相关流程&#xff0c;比以前的流程有不少改变&#xff0c;已经写了word记录了流程&#xff0c;给下一任图书管理员做参考。 2.进行了项目的中期…

mysql集群的主从复制搭建

1.master上和slave分别安装好mysql&#xff08;5.7&#xff09; 2.按照下面的方式进行安装 3.安装完成后&#xff0c;进行初始化&#xff0c;并找到默认的密码进行登录 4.设置为开机自&#xff0c;并检查状态 5.进行登录&#xff0c;用root账户&#xff0c;密码为生成的那个密码…

C++:STL之Vector实现

vector各函数 #include<iostream> #include<vector> using namespace std;namespace lz {//模拟实现vectortemplate<class T>class vector{public:typedef T* iterator;typedef const T* const_iterator;//默认成员函数vector(); …

SpringBoot项目如何引入外部jar及将外部jar打包到项目发布jar包

1、创建一个SpringBoot项目 下载项目之后将项目导入IDEA 2、如何添加外部jar包 准备一个外部的jar包&#xff0c; 我这里使用的是guava-31.1-jre.jar作为演示 下载地址&#xff1a;https://repo1.maven.org/maven2/com/google/guava/guava/31.1-jre/guava-31.1-jre.jar 在项…

黎曼的几何基础,维度

黎曼的几何基础&#xff0c;让数学领先物理100年&#xff0c;维度是人类最大的障碍 - 知乎 高斯很早就有了“高维几何”的想法&#xff0c;他曾经向他的同事们说起假想完全生活在二维表面上的“书虫”&#xff0c;并想要把这推广到高维空间的几何学中去。然而&#xff0c;由于害…

Java安全编码规范之Web安全漏洞

Java安全编码规范之Web安全漏洞安全现状漏洞案例事件一事件二事件三安全编码规范之常见的安全漏洞敏感数据编码概述漏洞危害常见关键字举例解决方案代码硬编码秘钥错误示例日志打印导致的敏感信息泄露漏洞概述关键字举例解决方案代码中在日志打印token 错误示例文件上传漏洞概述…

CSDN客诉周报第12期|修复10个重大bug,解决29个次要bug,采纳1个用户建议

听用户心声&#xff0c;解用户之需。hello&#xff0c;大家好&#xff0c;这里是《CSDN客诉周报》第12期&#xff0c;接下来就请大家一同回顾我们最近几周解决的bug&#xff5e; 一、重大问题 1、【博客】主页无法访问 反馈量&#xff1a;80 发生时间&#xff1a;10月30日下…

外汇天眼:Axi收回在RGT Capital的全部控制权,Eurotrader获得FCA牌照

在过去的一周里&#xff0c;国外外汇市场上有哪些值得关注的新闻&#xff0c;跟着天眼君一起了解下吧~具体新闻如下&#xff1a; 1、Axi收回在RGT Capital的全部控制权 据天眼君了解&#xff0c;总部位于澳大利亚的零售外汇和差价合约经纪商Axi在澳大利亚投资公司RGT Capital的…

AutoDL使用手册

官网&#xff1a;AutoDL-品质GPU租用平台-租GPU就上AutoDL 1.服务器购买 2.新建虚拟环境 conda create -n tf python3.8 # 构建一个虚拟环境&#xff0c;名为&#xff1a;tf conda init bash && source /root/.bashrc # 更新bashrc中的环境变量 conda acti…

【Flink】使用水位线实现热门商品排行以及Flink如何处理迟到元素

文章目录一 WaterMark1 水位线特点总结2 实时热门商品【重点】&#xff08;1&#xff09;数据集&#xff08;2&#xff09;实现思路a 分流 - 开窗 - 聚合分流&#xff1a;开窗&#xff1a;聚合&#xff1a;b 再分流 -- 统计再分流&#xff1a;统计&#xff1a;&#xff08;3&am…

【Hack The Box】Linux练习-- Seventeen

HTB 学习笔记 【Hack The Box】Linux练习-- Seventeen &#x1f525;系列专栏&#xff1a;Hack The Box &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f4c6;首发时间&#xff1a;&#x1f334;2022年9月7日&#x1f334; &#x1f…

SpringBoot结合Liquibase实现数据库变更管理

《从零打造项目》系列文章 工具 比MyBatis Generator更强大的代码生成器 ORM框架选型 SpringBoot项目基础设施搭建 SpringBoot集成Mybatis项目实操 SpringBoot集成MybatisPlus项目实操 SpringBoot集成Spring Data JPA项目实操 数据库变更管理 数据库变更管理&#xff1a;Li…

[附源码]Python计算机毕业设计Django的党务管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

行为型模式-命令模式

package per.mjn.pattern.command;import java.util.HashMap; import java.util.Map;// 订单类 public class Order {// 餐桌号码private int diningTable;// 点的餐品和份数private Map<String, Integer> foodDir new HashMap<>();public int getDiningTable() {…

[附源码]计算机毕业设计springboot高校车辆管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

家居建材企业竞争白热化,如何通过供应商协同系统转型升级,提高核心竞争力

伴随房地产高景气时代逐渐退去&#xff0c;新房销售红利期或已接近尾声&#xff0c;家居建材需求正迈入平稳发展新阶段&#xff0c;企业之间竞争更加白热化。在面对数字化时代的快速发展&#xff0c;很多家居建材企业已达成这样的共识&#xff1a;数字化是企业未来发展的必由之…

人工智能岗位可以考什么证书?考试难不难?

最近几年人工智能在市场上的热度越来越大&#xff0c;很多企业都会利用这个项目来发展自己新渠道&#xff0c;那么想进入这一行的人需要怎么提升自己的技能呢&#xff1f;那就是考取人工智能相关的证书&#xff0c;目前阿里云人工智能是国内市场最热门的认证分为两个等级&#…

(2)点云库PCL学习——剔除点云值

1、主要参考 (1) 点云离群点剔除 — open3d python_Coding的叶子的博客-CSDN博客_离群点去除 (2) open3d之点云异常值去除&#xff08;笔记5&#xff09;_Satellite_H的博客-CSDN博客 2、剔除的方法 2.1无效值剔除 详见我的上一篇blob &#xff08;1&#xff09;点云库…

C语言—指针进阶(详解篇)

目录 1.字符指针 1.1字符指针定义 1.2 字符指针用法 2.指针数组 2.1 指针数组定义及使用 3.数组指针 3.1 数组指针定义 3.2 &数组名和数组名 3.3 数组指针的基本用法 4. 数组参数、指针参数 5. 函数指针 5.1 函数指针定义既基本使用 5.2 有趣的代码 6. 函…