我用mothur构建了一棵树,它生成了一个newick格式的文件,这是树文件:
(((X32:0.077342,(X13:0.030507,X5:0.032193):0.081108):0.009719,((((((((((X7:0.011658,X16:0.020922):0.004990,X9:0.011395):0.026780,X23:0.044775):0.091180,X100:0.154611):0.041705,((((X8:0.020255,X42:0.008695):0.029872,(X19:0.025754,X61:0.020516):0.036208):0.084498,X218:0.111857):0.022793,X239:0.176169):0.011033):0.063911,(X18:0.070163,X146:0.072237):0.050456):0.014607,(X24:0.065513,X78:0.067187):0.052101):0.010160,X25:0.105835):0.011914,X45:0.130995):0.009387,((X10:0.021955,(X4:0.016382,X1236:0.016838):0.004625):0.036976,X128:0.056704):0.033204):0.006892),(((X6:0.020583,X11:0.012977):0.062459,(X1:0.030791,X22:0.025639):0.033446):0.009294,(X49:0.049533,X3:0.048877):0.011889):0.010353);当我尝试使用import_mothur {phyloseq}将其导入到R中时,出现错误
Error in `taxa_names<-`(`*tmp*`, value = c("X32", "X13", "X5", "X7", "X16", :
taxa_names<-: You are attempting to assign duplicated taxa_names我查看了这个树文件,没有找到任何重复的名称。我使用了不同的数据集(序列数据),但在mothur中使用了相同的方法,这是可行的。我就是不明白这个文件哪里错了?
谢谢!
发布于 2016-03-31 04:58:52
我自己也遇到了这个bug。对我有效的解决方案是使用phytools包中的read.newick()命令将树文件读入R。然后,您可以使用phy_tree()和merge_phyloseq将树导入到phyloseq中。由于某些原因,ape中的read.tree命令不喜欢清晰剪切格式的newick文件。
xtree <- read.newick("test.tree") phy_xtree <- phy_tree(xtree) # Constructor for phy_tree object physeq_merged <- merge_phyloseq(physeq, phy_xtree) # Merge tree into phyloseq object
发布于 2014-12-12 14:27:30
文件实际上是由read.tree从ape包中读取的。由于某些原因,它不喜欢这个文件的格式。我承认我不熟悉这种文件格式,但是如果您用
xtree <- read.tree("test.tree")
plot(xtree)

您可以看到有一些未命名的提示。这些都是导致问题的原因。read.table函数将这些赋值给节点值,而不是TIP值。您可以使用以下命令“修复”树并获得与import_mothur相同的结果
xtree$tip.label[c(26,28,30)]<-paste0("X", c(6,1,49))
phyloseq(xtree)所以我猜可能是你的newick格式文件有问题,或者是ape::read.tree函数有个bug。
https://stackoverflow.com/questions/27437478
复制相似问题