基因表达差异分析R工具包DESeq2的详细使用方法和使用案例

DESeq2是一种常用的差异表达基因分析工具,可用于RNA-seq数据的差异表达分析。下面是DESeq2的详细使用步骤和全部脚本示例。

文章参考

Moderated estimation of fold change and dispersion for RNA-seq data with DESeq2 | Genome Biology | Full Text (biomedcentral.com)

bioconda源对工具包的介绍:

Bioconductor - DESeq2

安装

下面是在R中安装DESeq2的详细步骤:

  1. 安装R和RStudio

    • 如果你还没有安装R,可以在R官方网站下载并安装最新版本的R。
    • 推荐使用RStudio作为R语言的集成开发环境。你可以在RStudio官网下载并安装适合你操作系统的版本。
  2. 启动R或RStudio

    • 打开R或者RStudio。
  3. 安装DESeq2包

    • 在R或RStudio的命令行中输入以下命令安装DESeq2包:
    if (!requireNamespace("BiocManager", quietly = TRUE))
        install.packages("BiocManager")
    
    BiocManager::install("DESeq2")
    

    这将会从Bioconductor仓库安装DESeq2包及其依赖项。

  4. 加载DESeq2包

    • 安装完成后,在R或RStudio中输入以下命令加载DESeq2包:
    library(DESeq2)

    确保没有报错,这样DESeq2包就已经成功加载了。

安装完成后,你就可以使用DESeq2进行基因表达差异分析了。记得在分析之前准备好你的RNA-seq数据并按照DESeq2的文档或教程进行分析。

DESeq2 的完整使用步骤和示例分析脚本,以及每个步骤的输入、输出和解释。

步骤 1: 读取和整理数据

首先,加载必要的 R 包和数据文件。数据应该包括表达矩阵和样本信息。

# 读取 DESeq2 包
library(DESeq2)

# 读取表达矩阵
countData <- as.matrix(read.csv("count_matrix.csv", row.names = 1))

# 读取样本信息
sampleInfo <- read.csv("sample_info.csv")

# 创建 DESeq2 数据对象
dds <- DESeqDataSetFromMatrix(countData, colData = sampleInfo, design = ~ condition)
  • count_matrix.csv: 包含基因或转录本的表达矩阵,行代表基因或转录本,列代表样本。
  • sample_info.csv: 包含每个样本的信息,例如条件、分组等。

步骤 2: 数据标准化和差异表达分析

使用 DESeq2 对数据进行标准化和差异表达分析。

# 标准化数据
dds <- DESeq(dds)

# 进行差异表达分析
res <- results(dds)

步骤 3: 结果解释和可视化

对差异表达结果进行解释和可视化。

# 查看差异表达基因
topGenes <- head(rownames(res[order(res$padj), ]), 10)

# 输出差异表达基因
write.csv(res, file = "deseq2_results.csv")

# 绘制差异表达图
plotCounts(dds, gene = topGenes, intgroup = "condition")
  • deseq2_results.csv: 包含差异表达分析结果的输出文件。

解释和注意事项:

  • DESeqDataSetFromMatrix(): 用于创建 DESeq2 数据对象,其中 countData 是表达矩阵,sampleInfo 包含样本信息,design 参数指定实验设计。
  • DESeq(): 对数据进行归一化和标准化,准备进行差异表达分析。
  • results(): 提取差异表达分析的结果,包括基因表达差异统计信息。
  • 结果包括基因表达水平的差异统计指标,如 fold change、调整的 p 值(padj)等。
  • plotCounts(): 用于绘制基因表达水平的差异示意图,以更直观地展示不同条件下基因的表达情况。

使用案例

以下是三个使用 DESeq2 工具包的案例,包括完整的脚本以及输入输出文件内容和格式的详细解释。

案例 1: 基因差异表达分析

输入文件:

  • count_matrix.csv: 包含基因表达计数矩阵,行代表基因,列代表样本。
  • sample_info.csv: 包含每个样本的信息,例如条件或组别。

脚本:

# 读取 DESeq2 包
library(DESeq2)

# 读取表达矩阵和样本信息
countData <- as.matrix(read.csv("count_matrix.csv", row.names = 1))
sampleInfo <- read.csv("sample_info.csv")

# 创建 DESeq2 数据对象
dds <- DESeqDataSetFromMatrix(countData, colData = sampleInfo, design = ~ condition)

# 标准化数据和进行差异表达分析
dds <- DESeq(dds)
res <- results(dds)

# 输出差异表达基因列表和统计信息
write.csv(res, file = "deseq2_results.csv")

# 绘制差异表达基因的表达图
topGenes <- head(rownames(res[order(res$padj), ]), 10)
plotCounts(dds, gene = topGenes, intgroup = "condition")

输出文件:

  • deseq2_results.csv: 包含差异表达分析结果的输出文件。包括基因、fold change、p 值、调整的 p 值等信息。
  • 图形文件:包含差异表达基因的表达图,显示不同条件下基因的表达情况。

案例 2: 多组实验设计的差异分析

输入文件:

  • count_matrix.csv
  • sample_info_multigroup.csv: 包含多组实验设计的样本信息。

脚本:

# 读取 DESeq2 包
library(DESeq2)

# 读取表达矩阵和样本信息
countData <- as.matrix(read.csv("count_matrix.csv", row.names = 1))
sampleInfo <- read.csv("sample_info_multigroup.csv")

# 创建 DESeq2 数据对象(多组实验设计)
dds <- DESeqDataSetFromMatrix(countData, colData = sampleInfo, design = ~ group + condition)

# 标准化数据和进行差异表达分析
dds <- DESeq(dds)
res <- results(dds)

# 输出差异表达基因列表和统计信息
write.csv(res, file = "deseq2_results_multigroup.csv")

输出文件:

  • deseq2_results_multigroup.csv: 包含多组实验设计差异表达分析结果的输出文件。
gene_id baseMean log2FoldChange lfcSE stat pvalue padj
GeneA 100 1.5 0.2 7.2 0.0001 0.001
GeneB 80 -0.8 0.3 -4.5 0.0002 0.002
GeneC 50 2.1 0.5 6 0.0003 0.003
  • gene_id: 基因或转录本的标识符。
  • baseMean: 平均表达量。
  • log2FoldChange: 对数变换后的 fold change,表示在不同条件之间的表达倍数变化。
  • lfcSE: log2 fold change 的标准误差。
  • stat: 统计检验值。
  • pvalue: 未经校正的 p 值。
  • padj: 经过多重假设检验校正后的调整 p 值(通常使用 FDR 校正),用于控制假阳性发现率。

案例 3: 时间序列分析

输入文件:

  • count_matrix_timeseries.csv: 包含时间序列实验的基因表达计数矩阵。
GeneID Sample1 Sample2 Sample3 Sample4
GeneA 10 15 20 25
GeneB 5 8 12 18
GeneC 30 35 40 45
...
  • sample_info_timeseries.csv: 包含时间序列实验的样本信息,包括时间点等信息。
Sample TimePoint Treatment
Sample1 0 Control
Sample2 3 DrugA
Sample3 6 DrugA
Sample4 9 Control
...

脚本:

# 读取 DESeq2 包
library(DESeq2)

# 读取表达矩阵和样本信息
countData <- as.matrix(read.csv("count_matrix_timeseries.csv", row.names = 1))
sampleInfo <- read.csv("sample_info_timeseries.csv")

# 创建 DESeq2 数据对象(时间序列实验设计)
dds <- DESeqDataSetFromMatrix(countData, colData = sampleInfo, design = ~ time_point)

# 标准化数据和进行差异表达分析
dds <- DESeq(dds)
res <- results(dds)

# 输出差异表达基因列表和统计信息
write.csv(res, file = "deseq2_results_timeseries.csv")

输出文件:

  • deseq2_results_timeseries.csv: 包含时间序列实验差异表达分析结果的输出文件。

 DESeq2分析结果进行差异表达火山图的绘制

DESeq2 的结果文件 deseq2_results.csv,文件的格式类似于:

gene_id baseMean log2FoldChange lfcSE stat pvalue padj
GeneA 100 1.5 0.2 7.2 0.0001 0.001
GeneB 80 -0.8 0.3 -4.5 0.0002 0.002
GeneC 50 2.1 0.5 6 0.0003 0.003

使用 R 语言和 ggplot2 库来绘制火山图的示例代码:

# 导入必要的库
library(ggplot2)
library(dplyr) # 用于数据处理

# 读取差异表达结果文件
results <- read.csv("deseq2_results.csv")

# 设定显著性阈值(例如,调整的 p 值)
threshold <- 0.05

# 根据显著性阈值筛选差异表达基因
significant_genes <- results %>%
  filter(padj < threshold)

# 绘制火山图
ggplot(results, aes(x = log2FoldChange, y = -log10(padj), color = ifelse(padj < threshold, "red", "black"))) +
  geom_point(size = 1.5) +
  scale_color_manual(values = c("black", "red"), labels = c("Not significant", "Significant")) +
  labs(x = "log2(Fold Change)", y = "-log10(adjusted p-value)", title = "Volcano Plot of Differential Expression") +
  theme_minimal()

这段代码将根据调整的 p 值(padj)和 fold change(log2FoldChange)绘制火山图。显著性基因将以红色标记,非显著性基因将以黑色标记。您可以调整 threshold 的值来控制显著性。

最近更新

  1. TCP协议是安全的吗?

    2023-12-22 08:16:08       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-22 08:16:08       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-22 08:16:08       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-22 08:16:08       20 阅读

热门阅读

  1. 网络安全-WAF如何判断是攻击行为

    2023-12-22 08:16:08       41 阅读
  2. Docker搭建有分词器的ES集群

    2023-12-22 08:16:08       32 阅读
  3. 静态单赋值(SSA)(只讲形式不讲实现)

    2023-12-22 08:16:08       35 阅读
  4. python类和对象

    2023-12-22 08:16:08       45 阅读