DESeq2 varianceStabilizingTransformation全OTU含零报错解决方案咨询
解决方法
核心逻辑是varianceStabilizingTransformation函数会优先读取DESeq2对象中已计算完成的大小因子,不会重新触发大小因子的计算流程,因此我们可以提前用支持零值的poscounts模式计算好大小因子,再执行转换即可。
具体操作代码
- 提前为DESeq2对象计算大小因子,指定type为poscounts
DESeq2_Object <- estimateSizeFactors(DESeq2_Object, type = "poscounts")
- 直接执行方差稳定转换,此时不会再触发报错
vsd <- varianceStabilizingTransformation(DESeq2_Object, blind = TRUE)
提取转换后矩阵
如果需要导出转换后的数值矩阵,执行以下命令即可:
vsd_matrix <- assay(vsd)
原理说明
type="poscounts模式的大小因子计算逻辑专门适配所有OTU/特征都包含至少一个零值的微生物组数据场景,计算时仅使用每个样本中计数为正的特征参与运算,规避了默认方法需要所有特征全样本非零才能计算对数几何均值的限制。提前将计算完成的大小因子存入DESeq2对象后,方差稳定转换函数会直接调用已有的大小因子,不会触发默认的报错计算流程。
内容的提问来源于stack exchange,提问作者Purrsia
相关产品推荐
相关产品推荐

