DESeq2 的名称在 vegan adonis 出错后发生变化
names of DESeq2 change after error with vegan adonis
我在 deseq2 输出的命名(对比)方面遇到了这个问题,其中命名输出是不可重现的。通常比较看起来像:variable_level2_vs_level1 ("treat_b_vs_a")
但有时它会 return as variable1 ("treat1")。我也在其他网站上看到过这个问题的帖子,但我从未找到合适的解决方案(也没有找到原因)。
到目前为止,这是一个非常难以捉摸的问题,因为我无法轻易重现它。
但今天我设法解决了这个问题,并提出了导致以下问题的最小可重现代码。
仅当我 运行 具有不正确对比度的不良素食阿多尼斯模型时才会出现此问题。
也许有人可以帮助我更好地理解问题的根源
library(vegan)
library(DESeq2)
mat <- matrix(sample(1:1000), ncol=10)
var$treat <- c(rep("a",5), rep("b",5))
var$y <- c(rep("a",10))
dds <- DESeq2::DESeqDataSetFromMatrix(mat, colData = var, design = ~ treat)
dds = DESeq(dds, test="Wald", fitType="parametric")
resultsNames(dds)
这给出了 treat_b_vs_a,但是如果我 运行 它在 adonis 模型之后再次出现:
adonis(mat~var$y)
dds <- DESeq2::DESeqDataSetFromMatrix(mat, colData = var, design = ~ treat)
dds = DESeq(dds, test="Wald", fitType="parametric")
resultsNames(dds)
我得到治疗1。
因此,以某种方式触发 adonis 中的对比度错误会导致 DESeq 对对比度的处理不正确。
简短的回答是,当您 运行 adonis 函数时,对比度选项会发生变化。您可以查看此 post 以获取有关对比度的信息。下面是重现你的错误,首先我们将默认选项存储在一个新的设置上:
library(DESeq2)
library(vegan)
default_options = options()
mat <- matrix(sample(1:1000), ncol=10)
da = data.frame(treat = c(rep("a",5), rep("b",5)),
y= c(rep("a",10)))
dds <- DESeq2::DESeqDataSetFromMatrix(mat, colData = da, design = ~ treat)
dds = DESeq(dds, test="Wald", fitType="parametric")
以上是带名字的结果。我们可以看到环境选项和默认设置是一样的,
options()$contrasts
unordered ordered
"contr.treatment" "contr.poly"
default_options$contrasts
unordered ordered
"contr.treatment" "contr.poly"
现在 运行 adonis
在示例数据集上,一切正常:
data(dune)
data(dune.env)
adonis(dune ~ dune.env$Management)
unordered ordered
"contr.treatment" "contr.poly"
运行 您的示例会引发错误:
adonis(mat~da$y)
options()$contrasts
[1] "contr.sum" "contr.poly"
可以看到现在改了。而 运行ning DESeq2 会给你你看到的结果。你需要改回来:
options(contrasts = c(unordered = "contr.treatment",ordered = "contr.poly"))
dds <- DESeq2::DESeqDataSetFromMatrix(mat, colData = da, design = ~ treat)
dds = DESeq(dds, test="Wald", fitType="parametric")
resultsNames(dds)
[1] "Intercept" "treat_b_vs_a"
我认为您遗漏了一条重要信息:在您的示例中,adonis
失败:
> adonis(mat ~ da$y)
Error in `contrasts<-`(`*tmp*`, value = contr.funs[1 + isOF[nn]]) :
contrasts can be applied only to factors with 2 or more levels
您的 y
是常量(只有一个值),无法使用。的确,在 vegan 2.5-x 中我们确实设置了对比度(这是一个用户选项),但我们稍后会重置它们。但是,如果 adonis
由于输入无效而失败,则不会发生此重置。
这可以修复,这样我们即使在失败时也能重置对比度,但未来的版本不会设置对比度,因此我不打算只解决这个问题。
我在 deseq2 输出的命名(对比)方面遇到了这个问题,其中命名输出是不可重现的。通常比较看起来像:variable_level2_vs_level1 ("treat_b_vs_a") 但有时它会 return as variable1 ("treat1")。我也在其他网站上看到过这个问题的帖子,但我从未找到合适的解决方案(也没有找到原因)。
到目前为止,这是一个非常难以捉摸的问题,因为我无法轻易重现它。 但今天我设法解决了这个问题,并提出了导致以下问题的最小可重现代码。
仅当我 运行 具有不正确对比度的不良素食阿多尼斯模型时才会出现此问题。 也许有人可以帮助我更好地理解问题的根源
library(vegan)
library(DESeq2)
mat <- matrix(sample(1:1000), ncol=10)
var$treat <- c(rep("a",5), rep("b",5))
var$y <- c(rep("a",10))
dds <- DESeq2::DESeqDataSetFromMatrix(mat, colData = var, design = ~ treat)
dds = DESeq(dds, test="Wald", fitType="parametric")
resultsNames(dds)
这给出了 treat_b_vs_a,但是如果我 运行 它在 adonis 模型之后再次出现:
adonis(mat~var$y)
dds <- DESeq2::DESeqDataSetFromMatrix(mat, colData = var, design = ~ treat)
dds = DESeq(dds, test="Wald", fitType="parametric")
resultsNames(dds)
我得到治疗1。
因此,以某种方式触发 adonis 中的对比度错误会导致 DESeq 对对比度的处理不正确。
简短的回答是,当您 运行 adonis 函数时,对比度选项会发生变化。您可以查看此 post 以获取有关对比度的信息。下面是重现你的错误,首先我们将默认选项存储在一个新的设置上:
library(DESeq2)
library(vegan)
default_options = options()
mat <- matrix(sample(1:1000), ncol=10)
da = data.frame(treat = c(rep("a",5), rep("b",5)),
y= c(rep("a",10)))
dds <- DESeq2::DESeqDataSetFromMatrix(mat, colData = da, design = ~ treat)
dds = DESeq(dds, test="Wald", fitType="parametric")
以上是带名字的结果。我们可以看到环境选项和默认设置是一样的,
options()$contrasts
unordered ordered
"contr.treatment" "contr.poly"
default_options$contrasts
unordered ordered
"contr.treatment" "contr.poly"
现在 运行 adonis
在示例数据集上,一切正常:
data(dune)
data(dune.env)
adonis(dune ~ dune.env$Management)
unordered ordered
"contr.treatment" "contr.poly"
运行 您的示例会引发错误:
adonis(mat~da$y)
options()$contrasts
[1] "contr.sum" "contr.poly"
可以看到现在改了。而 运行ning DESeq2 会给你你看到的结果。你需要改回来:
options(contrasts = c(unordered = "contr.treatment",ordered = "contr.poly"))
dds <- DESeq2::DESeqDataSetFromMatrix(mat, colData = da, design = ~ treat)
dds = DESeq(dds, test="Wald", fitType="parametric")
resultsNames(dds)
[1] "Intercept" "treat_b_vs_a"
我认为您遗漏了一条重要信息:在您的示例中,adonis
失败:
> adonis(mat ~ da$y)
Error in `contrasts<-`(`*tmp*`, value = contr.funs[1 + isOF[nn]]) :
contrasts can be applied only to factors with 2 or more levels
您的 y
是常量(只有一个值),无法使用。的确,在 vegan 2.5-x 中我们确实设置了对比度(这是一个用户选项),但我们稍后会重置它们。但是,如果 adonis
由于输入无效而失败,则不会发生此重置。
这可以修复,这样我们即使在失败时也能重置对比度,但未来的版本不会设置对比度,因此我不打算只解决这个问题。