零基础入门转录组数据分析——DESeq2差异分析

零基础入门转录组数据分析——DESeq2差异分析

目录

  • 零基础入门转录组数据分析——DESeq2差异分析
    • 1. 转录组分析基础知识
    • 2. DESeq2差异分析(Rstudio)
    • 3. 结语



1. 转录组分析基础知识

1.1 什么是转录组?
转录组(transcriptome) 是指在某一生理条件下,细胞内所有转录产物的集合,这些产物主要包括信使RNA(mRNA)、核糖体RNA(rRNA)、转运RNA(tRNA)以及非编码RNA(ncRNA)。其中,编码RNA可以通过转录和翻译过程产生蛋白质,从而直接调控生命活动;而非编码RNA具有调节基因表达的作用,它们可以对染色体结构、RNA加工修饰及稳定性、转录和翻译、甚至蛋白质的转运及稳定性产生影响。
简单来说:转录组是指一个活细胞在特定时间和环境下,所能转录出来的所有RNA的总和。因此,转录组分析就是为了了解基因的表达调控机制和功能。

1.2 差异分析是什么?为什么要做差异分析?
转录组差异分析是一种生物信息学分析方法,旨在比较不同样本或条件下转录组数据的差异,以揭示基因表达的变化。
简单来说:就是从上w个基因中找出不同样本中表达具有差异的基因,从而了解这些差异基因如何影响生物体的生理功能和疾病发生发展。

1.3 在R中对于转录组数据都有哪些差异分析的方法?
包括但不局限于DESeq2、limma和edgeR等。
DESeq2: 基于负二项分布模型进行差异分析,考虑了测序深度和基因长度对count数据的影响,因此在处理高度变异的基因时表现较好。DESeq2还提供了多种标准化方法,可以帮助减少批次效应和其他技术噪声。
limma: 最初是为微阵列数据设计的,后来也扩展到RNA-Seq数据分析。它使用线性模型进行差异分析,并且可以轻松处理多个因素和协变量。limma的优势在于其速度和灵活性,可以处理大量的基因和样本。
edgeR: 也是基于负二项分布模型进行差异分析,但与DESeq2不同的是,它使用了经验贝叶斯方法来估计分散参数,从而提高了差异检验的准确性和稳定性。edgeR在处理大型转录组数据集时表现出色,尤其是在识别低表达水平的差异基因方面。

1.4 三种方法对于输入数据的要求?
DESeq2: 需要原始的count矩阵(如通过htseq-count工具获得),并且只支持重复样品。
limma: 可以接受原始的count矩阵,但需要用户自行进行标准化(通常是log转换),并且也支持重复样品。
edgeR: 要求输入原始的count矩阵,既支持单个样品也支持重复样品。

1.5 在做转录组分析的时候该选用哪种方法?(关键)
GEO芯片数据——用limma差异分析,因为GEO芯片数据底层已经对数据做了标准化处理。
数据参考:零基础入门转录组分析——数据处理(GEO数据库——芯片数据))

GEO高通量数据——用DESeq2差异分析,因为可以获取到count数据。
数据参考:零基础入门转录组分析——数据处理(GEO数据库——高通量测序数据))

TCGA_count数据——用DESeq2差异分析,因为可以获取到count数据。
数据参考:零基础入门转录组分析——数据处理(TCGA数据库))

自测序数据——用DESeq2差异分析,因为可以获取到count数据。
(数据参考:零基础入门转录组分析——数据处理(自测序数据))

注:目前了解到的很少用到edgeR,一般来说有重复的样本通常limma和DESeq2就能解决(edgeR这种方法不做过多介绍)。



2. DESeq2差异分析(Rstudio)

本项目以GSE203346数据集(高通量测序数据)展示DESeq2差异分析过程
实验分组:疾病组(18例),对照组(19例)
R版本:4.2.2
R包:tidyverse,lance,DESeq2	

注:只要是能获取到count,并且有重复分组,都能用DESeq2做差异分析

数据处理过程参考之前的教程:零基础入门转录组分析——数据处理(GEO数据库——高通量测序数据)

设置工作空间:

rm(list = ls()) # 删除工作空间中所有的对象
setwd('/XX/XX/XX') # 设置工作路径
if(!dir.exists('./01_DEGs')){dir.create('./01_DEGs')
} # 判断该工作路径下是否存在名为01_DEGs的文件夹,如果不存在则创建,如果存在则pass
setwd('./01_DEGs/') # 设置路径到刚才新建的01_DEGs下

加载包:

library(tidyverse)
library(lance)
library(DESeq2)

导入处理好的表达矩阵:

dat <- read.csv('../../00_rawdata/GSE203346/dat.GSE203346_count.csv', check.names = F, row.names = 1)%>%lc.tableToNum()

dat如下图所示行名为基因symbol,列名为样本ID,表中数字是原始count(都是整数,并且不需要做任何处理
在这里插入图片描述
导入处理好的分组信息表:

# 分组信息
colData <- read.csv('../../00_rawdata/GSE203346/group.GSE203346.csv')
colData$group <- factor(colData$group, levels = c("control","disease"))
table(colData$group)
dat <- dat[, colData$sample] # 让表达矩阵的样本与分析信息表保持一致

colData如下图所示,第一列为样本ID,第二列为样本分组
在这里插入图片描述
先创建DESeqDataSet对象(这里会用到前面导入的 datcolData

dds <- DESeqDataSetFromMatrix(countData = dat, colData = colData, design = ~group)

dds如下图所示
在这里插入图片描述

  • design = ~group:这定义了实验的分组情况
  • colData = colData:这是一个数据框,包含样本的列信息(例如,样本名、组别等)。
  • assays = dat:count表达矩阵,行代表基因,列代表样本。

先筛选掉低表达的基因(为了尽量避免低表达基因导致的假阳性结果),之后估计每个样本的大小因子(大小因子是用于校正不同样本之间测序深度差异的一种方法,以确保在进行基因表达比较时能够公平地比较不同样本)。

dds <- dds[rownames(counts(dds)) > 1, ] # 过滤掉在任何样本中计数都小于或等于1的基因。
dds <- estimateSizeFactors(dds) # 估计每个样本的大小因子

estimateSizeFactors函数会根据每个样本的测序数据(通常是基因表达计数数据)来计算一个系数,这个系数反映了该样本相对于其他样本的测序深度,这个系数就是大小因子。

具体来说,DESeq2首先会对原始的表达量矩阵进行log转换,然后计算每个基因在所有样本中的均值。接下来,对于每个样本,它会将该样本中每个基因的表达量减去对应的所有样本中的均值,然后取中位数。最后,通过对这些中位数进行指数运算,得到每个样本的大小因子。

一旦计算出了每个样本的大小因子,就可以将其用于归一化原始的表达量数据。

归一化的目的:是消除不同样本之间由于测序深度差异而导致的偏差,使得不同样本之间的基因表达数据可以更加公平地进行比较和分析

之后通过DESeq函数用归一化后的数据进行差异表达分析

dds <- DESeq(dds)

最后提取差异表达分析的结果,并将其转换成数据框

res <- results(dds, contrast = c("group","control","disease"))
DEG <- as.data.frame(res) 


注:
results函数中contrast参数来指定比较时,第二个元素(在这个例子中是"control")通常是被用作参考组或基线组,而第三个元素(在这个例子中是"disease")则是用来和参考组进行比较的组。(换句话说,"control"是被比较的组,而"disease"是用来比较的组)

举个栗子:
如果某个基因在"disease"中的表达量高于在"control"中的表达量,那么它的log2倍数变化将是一个正值

DEG 如下图所示:

  • baseMean: 这一列显示的是每个基因在所有样本中的平均表达量,经过大小因子校正后的值。它反映了基因的总体表达水平。
  • log2FoldChange: 这一列展示的是基因表达的对数2倍变化值(log2 fold change),正值表示在disease中表达上调,负值表示在disease中表达下调。
  • lfcSE: 这一列是log2FoldChange的标准误差估计值,它提供了log2FoldChange估计的不确定性度量
  • stat: 这一列是基因表达变化的统计检验值,用于衡量基因表达变化的显著性。一个大的正值或负值表示基因表达的变化是否显著。
  • pvalue: 这一列显示的是基因表达变化的p值,用于评估观察到的效应(如基因表达的变化)是否可能是由于随机误差引起的,通常认为P < 0.05则结果是显著的。
  • padj: 这一列是调整后的p值,用于控制假阳性率(简单说就是矫正后的P值

在这里插入图片描述

给差异分析结果添加上下调标签

DEG$change <- as.factor(ifelse(DEG$pvalue < 0.05 & abs(DEG$log2FoldChange) >= 0.5,ifelse(DEG$log2FoldChange > 0.5,'Up','Down'),'Not')) 
table(DEG$change)
DEG_write <- cbind(symbol = rownames(DEG), DEG)

处理好的 DEG_write 如下图所示,除了新添加的symbol和change,其余与DEG一样,change列中: (筛选条件:|log2FoldChange| >= 0.5 & p.value < 0.05)

  • Up 表示上调基因
  • Down 表示下调基因
  • Not 表示未通过筛选的基因

在这里插入图片描述
筛选出表达具有差异的基因 (筛选条件:|log2FoldChange| >= 0.5 & p.value < 0.05)

sig_diff <- subset(DEG, DEG$pvalue < 0.05 & abs(DEG$log2FoldChange) >= 0.5)
sig_diff_write <- cbind(symbol = rownames(sig_diff), sig_diff)

sig_diff_write 与DEG_write的差别就是少了那些没有差异的基因。

最后,保存差异分析的结果:

write.csv(DEG_write, file = paste0('DEG_all.csv'))
write.csv(sig_diff_write, file = paste0('DEG_sig.csv'))


3. 结语

以上就是DESeq2差异分析的所有过程,如果有什么需要补充或不懂的地方,大家可以私聊我或者在下方评论。

如果觉得本教程对你有所帮助,点赞关注不迷路!!!


  • 目录部分跳转链接:零基础入门生信数据分析——导读

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

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

相关文章

n1.线性表及其实现

1.引入—多项式表示 对于多项式&#xff0c;如何使用程序进行编写呢&#xff1f; 方法一&#xff1a;一维数组。下标对应未知数的指数&#xff0c;元素个体对应系数。缺点就是都得全部表示&#xff0c;系数为0项的存在浪费空间。例如&#xff0c;x只有一次方和2000次方&#…

MySQL、Oracle查看字节和字符长度个数的函数

目录 0. 总结1. MySQL1.1. 造数据1.2. 查看字符/字节个数 2. Oracle2.1. 造数据2.2. 查看字符/字节个数 0. 总结 databasecharacterbyteMySQLchar_length()length()Oraclelength()lengthB() 1. MySQL 1.1. 造数据 drop table if exists demo; create table demo (id …

手机一键换ip地址,解锁网络自由

在数字化时代&#xff0c;手机已经成为我们生活中不可或缺的一部分。随着移动互联网的快速发展&#xff0c;手机用户对于网络安全和隐私保护的需求也日益增强。其中&#xff0c;IP地址作为手机在网络中的标识&#xff0c;扮演着重要的角色。有时&#xff0c;出于隐私保护或网络…

WebSocket用户验证

在WebSocket中&#xff0c;如何携带用户的验证信息 一、在OnMessage中进行验证 客户端在连接到服务器后&#xff0c;客户端通过发送消息&#xff0c;服务器端在OnMessage方法中&#xff0c;进行信息验证&#xff0c;这种方式需要将用户身份验证及接收用户消息进行混合处理&am…

Python人工智能:推动气象科学研究与技术进步的新动力

Python是功能强大、免费、开源&#xff0c;实现面向对象的编程语言&#xff0c;在数据处理、科学计算、数学建模、数据挖掘和数据可视化方面具备优异的性能&#xff0c;这些优势使得Python在气象、海洋、地理、气候、水文和生态等地学领域的科研和工程项目中得到广泛应用。可以…

Oracle 数据库中的全文搜索

Oracle 数据库中的全文搜索 0. 引言1. 整体流程2. 创建索引2-1. 创建一个简单的表2-2. 创建文本索引2-3. 查看创建的基础表 3. 运行查询3-1. 运行文本查询3-2. CONTAINS 运算符3-3. 混合查询3-4. OR 查询3-5. 通配符3-6. 短语搜索3-7. 模糊搜索&#xff08;Fuzzy searches&…

2021-08-06

yarn的简介&#xff1a; Yarn是facebook发布的一款取代npm的包管理工具。 yarn的特点&#xff1a; 速度超快。 Yarn 缓存了每个下载过的包&#xff0c;所以再次使用时无需重复下载。 同时利用并行下载以最大化资源利用率&#xff0c;因此安装速度更快。超级安全。 在执行代码…

Redis性能瓶颈与安全隐患排查验证纪实

在写《Redis怎样保证数据安全&#xff1f;》这篇文章&#xff0c;我是有对redis设置密码需要哪些步骤&#xff0c;设置密码的性能损耗有验证的。这就涉及到要对redis的配置做修改。 开始时我是打算采用直接使用redis配置文件的方式。所以我从redis官网下载了一个默认的配置文件…

ROS 2边学边练(9)-- 用launch命令管理启动项

概念 我们在前面的ROS 2体验过程中&#xff0c;一直拿小海龟这个例子来练手&#xff0c;过程比较轻松&#xff0c;因为只有两个节点&#xff08;/turtlesim和/teleop_turtle&#xff09;&#xff0c;只需打开两个终端&#xff0c;ros2 run 节点就ok&#xff0c;但&#xff0c;现…

Datacom HCIP笔记-ISIS协议

IS中间系统&#xff08;路由器/运行了ISIS协议的设备&#xff09; ES终端系统(PC,PAD,print) 网络功能模型 ISO定义 事实标准 OSI TCP/IP 网络层(CLNP) (IS-IS) 网络…

EfficientVMamba实战:使用EfficientVMamba实现图像分类任务(一)

文章目录 摘要安装包安装timm 数据增强Cutout和MixupEMA项目结构编译安装Vim环境环境安装过程安装库文件 计算mean和std生成数据集 摘要 论文&#xff1a;https://arxiv.org/pdf/2401.09417v1.pdf 作者研究了轻量级模型设计的新方法&#xff0c;通过引入视觉状态空间模型&…

Git、TortoiseGit、SVN、TortoiseSVN 的关系和区别

Git、TortoiseGit、SVN、TortoiseSVN 的关系和区别 &#xff08;二&#xff09;Git&#xff08;分布式版本控制系统&#xff09;:&#xff08;二&#xff09;SVN&#xff08;集中式版本控制系统&#xff09;&#xff08;三&#xff09;TortoiseGit一、下载安装 git二、安装过程…

Tomcat调优总结

Tomcat自身的调优是针对conf/server.xml中的几个参数的调优设置。首先是对这几个参数的含义要有深刻而清楚的理解。以tomcat8.5为例&#xff0c;讲解参数。 同时也得认识到一点&#xff0c;tomcat调优也受制于linux内核。linux内核对tcp连接也有几个参数可以调优。 因此可以将…

scala实现通过Spark统计人均登录次数最终写入MySQL

谨以此博客作为记录 小编这里用的版本是&#xff1a; <hadoop.version>2.7.7</hadoop.version> <spark.version>2.4.5</spark.version> <scala.version>2.12.10</scala.version> 如果没用到Hadoop可以忽略 步骤 准备数据&#xff0c;知道…

C++面向对象程序设计 - 访问对象中成员的3种方法

在C程序中访问对象的成员变量和成员函数&#xff0c;有三种方法&#xff1a; 通过对象名和成员运算符访问对象中的成员&#xff1b;通过指向对象的指针访问对象中的成员&#xff1b;通过对象的引用变量访问对象中的成员 在了解访问对象中成员的3种方法前&#xff0c;先了解下C…

网络安全之IP地址证书的重要性

在数字化时代&#xff0c;网络空间已成为各类活动的重要载体&#xff0c;无论是商业交易、信息交流还是远程办公&#xff0c;都离不开互联网的支撑。然而&#xff0c;网络环境的开放性与匿名性也带来了安全风险&#xff0c;如何确保网络交互中的身份真实可信&#xff0c;成为了…

【御控物联】JSON结构数据转换在物联业务中应用(场景案例二)

文章目录 一、物联网业务场景现状二、物联网业务场景数据交互格式三、JSON格式数据转换案例四、JSON数据格式转换DEMO五、在线转换工具六、技术资料 一、物联网业务场景现状 目前&#xff0c;市场上多数物联网关与物联平台捆绑售卖&#xff0c;网关采集到设备数据只能按照指定…

Excel·VBA二维数组组合函数之穷举推理题

看到一个帖子《CSDN-求助一道推理题》&#xff0c;与之前《python穷举暴力破解《2018年刑侦推理题》用python穷举的推理题很类似 那么是否可以使用《ExcelVBA二维数组组合函数、组合求和》combin_arr2d函数&#xff0c;生成结果进行穷举呢&#xff1f; Sub 穷举推理题()Dim …

修改Gradio界面中按钮Submit、Clear,Flag为中文,修改additional_inputs标签。

展示如图 Submit、Clear、additional_inputs标签 Submit、Clear修改 修改gradio库中interface.py additional_inputs标签 同一文件下 flag修改 flag展示

壁纸小程序Vue3(自定义头部组件)

1.自定义头部 coustom-nav <view class"layout"><view class"navbar"><view class"statusBar"></view><view class"titleBar"><view class"title">标题</view><view class&qu…