1

我一直在尝试“phyloseq-ize”我的 asv_table、a​​sv_id 和元数据以进行 16S 分析,使用 qiime2 创建并使用read.table(). 我已经能够成功地导入我的 asv_id 和元数据(分别使用tax_table()sample_data()),但我正在努力处理我的 asv_table。

我的 asv_table 的结构是一个数据框,其中包含我的分类单元的标题,我的行是样本(我也尝试使用转置数据进行此操作,其中我的分类单元是行,我的样本是列)。我最初的尝试很简单:

ps <- phyloseq(otu_table(asv_table, taxa_are_rows = FALSE))

然而这产生了:

Error in validObject(.Object) : invalid class “otu_table” object: 
 Non-numeric matrix provided as OTU table.
Abundance is expected to be numeric.

这导致我尝试将我的数据类更改为数字,并尝试再次导入:

asv_table_num <- data.matrix(asv_table, rownames.force = NA)

ps <- phyloseq(otu_table(otumat_num, taxa_are_rows = FALSE))

Error in validObject(.Object) : invalid class “phyloseq” object: 
 Component taxa/OTU names do not match.
 Taxa indices are critical to analysis.
 Try taxa_names()

我担心这是一个兔子洞,因为一个更简单的解决方案让我眼前一亮(我很难在互联网上研究我的问题......通常表明我创造了一个没有人遇到过的独特问题)。

我将不胜感激有关该主题的任何指导或帮助!

先感谢您。

4

1 回答 1

1

我最终能够解决我的问题,因此我将向可能遇到相同问题的任何人发布我的解决方案。

library(tidyverse)
devtools::install_github("jbisanz/qiime2R")
library(qiime2R)

asv_table <- read_qza("table.qza")

library(phyloseq)

ps <- qza_to_phyloseq(features = "table.qza")
于 2019-11-20T22:35:32.230 回答