Phyloseq:相对丰度 otu 表和元数据不匹配

如何解决Phyloseq:相对丰度 otu 表和元数据不匹配

我对 phyloseq 比较陌生,我很难获得一个相对丰度的 otu-table 可以输入到 siamcat R code for meta-analysis

# this works: from qza to phyloseq object
ps<-qza_to_phyloseq(
  features="all-table.qza",tree="rooted-tree.qza",taxonomy = "all-taxonomy.qza",Metadata = "Metafinal.tsv"
)

# import Metadata
Metadata <- read_tsv("Metafinal.tsv")

# 30 overlap of the Metadata-sample_id with ps,115 only in Metadata
gplots::venn(list(Metadata=Metadata$sample_id,features=sample_names(ps))

# works: from phyloseq object to relative abundance otu table
table(tax_table(ps)[,"Phylum"])
ps_rel_abund <- transform_sample_counts(ps,function(x){x / sum(x)})
ps_phylum_rel <- tax_glom(ps_rel_abund,"Phylum")
taxa_names(ps_phylum_rel) <- tax_table(ps_phylum_rel)[,"Phylum"]
rel_table <- as(otu_table(ps_phylum_rel),"matrix")

# column names and sample_id are 100% the same
colnames(rel_table)
Metadata$sample_id

# 100% overlap:
gplots::venn(list(Metadata=Metadata$sample_id,featuretable=colnames(rel_table)))

# check that Metadata and feature agree
stopifnot(all(colnames(rel_table) == Metadata$sample_id))

在这里我收到一条错误消息: all(colnames(rel_table) == Metadata$sample_id) is not TRUE 并且以下 siamcat code 根本不起作用。

我的Metadata[1:5,1:5]: sample_id absolute_filepath 研究experiment_acce... study_title

1 SRR8547628 $PWD/Chen_2020_da... Chen... SRX5349649 C 的解剖 2 SRR8547629 $PWD/Chen_2020_da... Chen... SRX5349648 C 的解剖 3 SRR8547630 $PWD/Chen_2020_da... Chen... SRX5349647 C 的解剖 4 SRR8547631 $PWD/Chen_2020_da… Chen… SRX5349646 解剖c… 5 SRR8547632 $PWD/Chen_2020_da... Chen... SRX5349645 解剖 c...

我的rel-table[1:5,1:5]: SRR5092146 SRR5092147 SRR5092148 SRR5092149 Phragmoplatophyta 0 0.0000000 0.00000000 0.000000000 脊椎动物 0 0.0000000 0.00000000 0.000000000 顶端复合体 0 0.0000000 0.00000000 0.000000000 子囊菌 0 0.0000000 0.00000000 0.000000000 弯曲杆菌 0 0.2465222 0.01166882 0.004337051 SRR5092150 Phragmoplastophyta 0.00000000 脊椎动物 0.00000000 顶端复合体 0.00000000 子囊菌 0.00000000 弯曲杆菌 0.02106281

nrow(Metadata)= 154 ncol(rel_table)= 154

请问,为什么它不起作用?我已经尝试了数周,但无法使代码正常运行...

感谢您的时间和帮助。

解决方法

如果我正确理解您的问题,您想知道为什么元数据和特征表中的样本 ID 之间有完美的重叠,但为什么

stopifnot(all(colnames(rel_table) == metadata$sample_id))

返回 FALSE

我认为这是因为您的样品顺序似乎不同。元数据中的前五个示例是:

SRR8547628
SRR8547629
SRR8547630
SRR8547631
SRR8547632

特征表中的前五个样本是:

SRR5092146
SRR5092147
SRR5092148
SRR5092149
SRR5092150

试试

stopifnot(all(colnames(rel_table) %in% metadata$sample_id))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?