首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用纯素adonis错误后更改DESeq2名称

用纯素adonis错误后更改DESeq2名称
EN

Stack Overflow用户
提问于 2021-02-13 16:34:40
回答 2查看 74关注 0票数 0

我在deseq2输出的命名(对比)中遇到了这个问题,在这种情况下,输出的命名是不可复制的。通常情况下,比较应该是: variable_level2_vs_level1 ("treat_b_vs_a"),但有时它会以variable1 ("treat1")的形式返回。我也在其他网站上看到过这个问题的帖子,但我从来没有找到一个像样的解决方案(也没有找到原因)。

直到现在,这一直是一个非常难以捉摸的问题,因为我无法轻易复制它。但今天,我设法弄明白了,并提出了一个最低限度的可重复代码,这将导致下面的问题。

只有当我运行一个不正确对比的纯素adonis模型时,问题才会发生。也许有人能帮我更好地理解问题的根源

代码语言:javascript
复制
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模型之后再次运行它:

代码语言:javascript
复制
adonis(mat~var$y)

dds <- DESeq2::DESeqDataSetFromMatrix(mat, colData = var, design = ~ treat)
dds = DESeq(dds, test="Wald", fitType="parametric")
resultsNames(dds)

我得到了treat1。

因此,用adonis中的对比度触发一个错误会导致DESeq不正确地处理对比度。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-02-14 20:57:27

我认为您遗漏了一条重要信息:在您的示例中,adonis失败了:

代码语言:javascript
复制
> 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是常量(只有一个值),无法使用。的确,在纯素 2.5-x中,我们确实设置了对比(这是一个用户选项),但我们稍后会重新设置它们。但是,如果adonis由于输入无效而失败,则不会发生此重置。

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

票数 1
EN

Stack Overflow用户

发布于 2021-02-13 18:22:50

简单的回答是,当运行adonis函数时,对比度选项将被更改。有关对比度的信息,您可以看到这个帖子。下面是再现您的错误,首先我们将默认选项存储在一个新的设置上:

代码语言:javascript
复制
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")

上面的结果给出了名字。我们可以看到环境选项和默认设置是相同的,

代码语言:javascript
复制
options()$contrasts
        unordered           ordered 
"contr.treatment"      "contr.poly"

default_options$contrasts
        unordered           ordered 
"contr.treatment"      "contr.poly"

现在在示例数据集上运行adonis,一切都正常:

代码语言:javascript
复制
data(dune)
data(dune.env)
adonis(dune ~ dune.env$Management)

        unordered           ordered 
"contr.treatment"      "contr.poly"

运行您的示例,这会引发一个错误:

代码语言:javascript
复制
adonis(mat~da$y)
options()$contrasts
[1] "contr.sum"  "contr.poly"

你可以看到它现在已经改变了。运行DESeq2将给出您所看到的结果。你需要把它改回来:

代码语言:javascript
复制
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"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66187422

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档