【问题标题】:names of DESeq2 change after error with vegan adonis纯素阿多尼斯错误后DESeq2的名称发生变化
【发布时间】:2021-02-13 16:34:40
【问题描述】:

我在 deseq2 输出的命名(对比度)方面遇到了这个问题,其中输出的命名不可重现。通常比较看起来像: variable_level2_vs_level1 ("treat_b_vs_a") 但有时它会作为变量 1(“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 对对比度的处理不正确。

【问题讨论】:

    标签: r vegan contrast


    【解决方案1】:

    我认为您遗漏了一条重要信息:在您的示例中,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 因输入无效而失败,则不会发生此重置。

    这个问题可以修复,即使在失败时我们也会重置对比度,但未来的版本不会设置对比度,因此我没有计划解决这个问题。

    【讨论】:

    • 感谢您的回复。我有一个解决方法,就是不运行失败的阿多尼斯。但我很好奇下面的问题。
    【解决方案2】:

    简短的回答是,当您运行 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"
    

    您可以看到它现在已更改。运行 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"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-25
      • 2017-08-26
      • 2020-04-11
      相关资源
      最近更新 更多