RNA-seq数据分析实战:基于DESeq2的差异表达基因鉴定与结果解读

在转录组分析中,差异分析是必不可少的一步。那什么是差异分析呢?差异分析的结果又该怎么解读?今天就让我们一起来深入了解一下,同时认识与它紧密相关的几个关键指标,以及怎么做差异分析。

1. 转录组差异分析基础知识

1.1 什么是转录组?

简单来说,转录组是指一个活细胞在特定时间和环境下,所能转录出来的所有RNA的总和。因此,转录组分析就是为了了解基因的表达调控机制和功能。

1.2 差异分析是什么?为什么要做差异分析?

转录组差异分析是一种生物信息学分析方法,旨在比较不同样本或条件下转录组数据的差异,以揭示基因表达的变化。从所有基因中找出不同样本中表达具有差异的基因,了解这些差异基因如何影响生物体的生理功能和疾病发生发展。

2. 差异分析(基于DESeq2)

2.1. 数据准备

我们使用示例的表达矩阵进行差异分析演示。

# 加载必要的包

library(DESeq2)
library(dplyr)
library(tibble)

导入原始基因表达量count表达矩阵:

dat <- read.csv("count.csv",check.names = F,row.names = 1,header = T)

基因表达值矩阵:行是基因,列是样本,内容为基因表达值,表达矩阵的样本列;

转录组分析原始基因表达量计数数据:

图片14

注意第一列基因名称不能有重复值。DESeq2只接受未经标准化处理的转录组分析原始基因表达量计数数据。

导入分组信息:

sample_groups <- read.csv("group.csv",check.names = F,row.names = 1,header = T)
# 设置参考水平(对照组normal在前)

sample_groups$Group <- factor(sample_groups$Group, levels = c("normal", "tumor"))

分组信息表如下图所示,第一列为样本ID,第二列为样本分组:

图片15

# 创建DESeqDataSet
dds <- DESeqDataSetFromMatrix(
  countData = dat,
  colData = sample_groups,
  design = ~ Group
)

# 过滤低表达基因(保留至少在3个样本中count >= 10的基因)
keep <- rowSums(counts(dds) >= 10) >= 3
dds <- dds[keep, ]

# 运行DESeq2
dds <- DESeq(dds)

# 获取差异分析结果
results <- results(dds, contrast = c("Group", "tumor", "normal"))

# 将结果转换为数据框并添加基因名
res_df <- as.data.frame(results) %>%
  tibble::rownames_to_column("Gene") %>%
  dplyr::arrange(padj)  # 按校正p值排序

# 定义差异基因筛选阈值
lfc_cutoff <- 1      # log2倍变化阈值
padj_cutoff <- 0.05  # 校正p值阈值

# 筛选显著差异基因
sig_genes <- res_df %>%
  dplyr::filter(
    !is.na(padj),
    abs(log2FoldChange) >= lfc_cutoff,
    padj <= padj_cutoff
  )

# 添加差异表达方向列
sig_genes <- sig_genes %>%
  dplyr::mutate(
    Regulation = dplyr::case_when(
      log2FoldChange >= lfc_cutoff & padj <= padj_cutoff ~ "Up",
      log2FoldChange <= -lfc_cutoff & padj <= padj_cutoff ~ "Down",
      TRUE ~ "Not Significant"
    )
  )

baseMean: 基因在所有样本中的平均表达量,反映基因的整体表达水平

log2FoldChange: 基因表达的对数2倍变化值(以2为底),正值表示在疾病组中表达上调,负值表示下调

lfcSE: log2FoldChange的标准误,反映fold change估计的精确度

stat: Wald检验统计量,用于评估表达变化的显著性程度

pvalue: 原始p值,表征差异表达的统计显著性(未校正多重假设检验)

padj: Benjamini-Hochberg法校正后的p值,用于控制错误发现率(FDR)

Regulation: 基因表达调控方向,基于log2FoldChange和padj的筛选结果判定

"Up": 在疾病组中显著上调(log2FC ≥ 1且padj ≤ 0.05),"Down": 在疾病组中显著下调(log2FC ≤ -1且padj ≤ 0.05),"Not Significant": 差异表达未达到显著性阈值

图片16

保存完整结果

write.csv(res_df, "DESeq2_All_Genes_Results.csv", row.names = FALSE)

# 保存显著差异基因结果

write.csv(sig_genes, "DESeq2_Significant_DEGs.csv", row.names = FALSE)
posted @ 2025-12-01 09:34  翰佰尔HiOmics云分析  阅读(0)  评论(0)    收藏  举报