引言
本系列将开展全新的转录组分析专栏,主要针对使用DESeq2
时可能出现的问题和方法进行展开。
往期复习
结果列的详细信息
您可以通过执行 mcols 函数来获取结果对象中涉及的变量和测试的详细信息。
mcols(res)$description
对于一个特定的基因,如果处理组与未处理组的对数变化倍数(log2 fold change)为-1,这意味着处理使得基因表达水平相对于未处理组下降了一半(即乘法变化为0.5)。如果关注的变量是连续变量,那么报告的对数变化倍数表示该变量每变化一个单位时的倍数变化。
关于 p 值设为 NA 的说明:结果表中的某些值可能因为以下原因被设为 NA:
- 如果一行中的所有样本计数都为零,那么 baseMean 列将显示为零,对应的对数变化倍数估计值、p 值和调整后的 p 值都会设为 NA。
- 如果一行中的样本存在极端计数异常值,那么 p 值和调整后的 p 值会被设为 NA。这些异常值是通过 Cook's distance 检测出来的。下文将介绍如何自定义异常值过滤以及如何替换异常值和重新拟合。
- 如果一行因为自动独立过滤而被筛选掉,因为其平均标准化计数较低,那么只有调整后的 p 值会被设为 NA。下文将介绍独立过滤的描述和自定义方法。
结果的丰富可视化和报告
- regionReport:使用 regionReport 包可以生成包含图表的结果 HTML 和 PDF 摘要。DESeq2Report 函数应在经过 DESeq 函数处理的 DESeqDataSet 上运行。
- Glimma:使用 Glimma 包可以生成包括 MA-plots(也称为 MD-plots)在内的 DESeq2 输出的交互式可视化。
- pcaExplorer:使用 pcaExplorer 包可以生成包括 PCA 图、计数箱线图和其他有用摘要的 DESeq2 输出的交互式可视化。
iSEE:iSEE 提供了创建基于 Shiny 的交互式图形用户界面的函数,用于探索存储在 SummarizedExperiment 对象中的数据,包括行和列级别的元数据。特别关注 SingleCellExperiment 对象中的单细胞数据,并可视化降维结果。
iSEEde 包提供了额外的面板,以促进 iSEE 应用程序中差异表达结果的交互式可视化。
- DEvis:DEvis 是一个强大的、集成的解决方案,用于分析差异表达数据。该包包括一系列用于操作和聚合数据的工具,以及一系列可定制的可视化和项目管理功能,简化了 RNA-Seq 分析,并提供了多种探索和分析数据的方法。
导出 CSV 文件
可以使用 R 基础函数 write.csv 或 write.delim 将结果导出为纯文本文件。建议使用描述性的文件名,以指示被测试的变量和水平。
write.csv(as.data.frame(resOrdered), file="condition_treated_results.csv")
仅导出通过调整后的 p 值阈值的结果可以使用 subset 函数,然后使用 write.csv 函数来完成。
resSig <- subset(resOrdered, padj < 0.1)
resSig
多因素实验设计
当实验受到多个因素的影响时,可以使用包含额外变量的设计公式来分析这些实验。实际上,DESeq2能够处理任何可以用固定效应项来描述的实验设计,包括多因素设计、包含交互作用的设计、涉及连续变量的设计、样条函数等。
通过在设计公式中加入额外的变量,可以控制计数数据中的额外变异。例如,如果实验条件样本在不同实验批次中分布均匀,将批次作为一个因素纳入设计中,可以提高发现由条件引起的差异的敏感性。当这些额外变量本身也是研究的重点,而不仅仅是控制变量时,有多种分析方法可供选择。
大规模样本实验:在样本数量众多的实验中(例如50个或100个样本),技术变异很可能会影响观察到的计数数据。如果忽视这种技术变异,可能会导致错误的结果。有许多方法可以用来模拟这种技术变异,并且这些方法可以轻松地整合到DESeq2的设计中,以便在估计感兴趣的效应的同时控制技术变异。
pasilla包中的数据包含了感兴趣的条件(“条件”列),以及关于进行的测序类型的信息(“类型”列),如下所示:
colData(dds)
创建 DESeqDataSet 的副本,以便可以使用多因素设计重新运行分析
ddsMF <- dds
将 type 的水平调整为仅包含字母(设计因子水平中也可以包括数字、下划线和句点)。更改水平名称时,请务必保持与当前顺序一致,以避免出错。
levels(ddsMF$type)
## [1] "paired-end" "single-read"
levels(ddsMF$type) <- sub("-.*", "", levels(ddsMF$type))
levels(ddsMF$type)
## [1] "paired" "single"
能够考虑不同测序技术的差别,并更清楚地揭示由处理引起的差异。条件作为关注的主要变量,被放在了公式的最后部分。因此,默认情况下,结果函数会提取与条件相关的结果,除非用户特别指定了对比或命名参数。
接下来,可以再次执行 DESeq 分析:
design(ddsMF) <- formula(~ type + condition)
ddsMF <- DESeq(ddsMF)
再次,使用 results 函数访问结果。
resMF <- results(ddsMF)
head(resMF)
还可以获取设计中最后一个变量以外的其他变量的 log2 倍数变化、p 值以及调整后的 p 值。以 type 为例,尽管它仅仅表示测序协议之间的差异,缺乏生物学意义,但在某些假设设计中,例如 ~genotype + condition + genotype:condition,可能对不同 genotype 之间的基线表达差异感兴趣,而 genotype 并非设计中的最后一个变量。
通常情况下,函数 results 的 contrast 参数要求一个包含三个元素的字符向量:变量名称、作为 log2 比率分子的因子水平名称,以及作为分母的因子水平名称。
resMFType <- results(ddsMF,
contrast=c("type", "single", "paired"))
head(resMFType)
对于连续变量或交互项(详见交互项部分),可以通过设置 results 函数的 name 参数来提取结果,其中 name 应对应于 resultsNames(dds) 返回的某个元素。