我通过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中使用了相同的方法,这很有用。我只是不明白这个文件有什么问题?
谢谢!!!!
答案 0 :(得分:3)
我自己刚遇到这个错误。对我有用的解决方案是使用phytools包中的read.newick()命令将树文件读入R.从那里你可以使用phy_tree()和merge_phyloseq将树导入phyloseq。出于某种原因,ape中的read.tree命令并不像clearcut格式化的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
答案 1 :(得分:1)
read.tree
包中的ape
实际上正在读取该文件。由于某种原因,它不喜欢这个文件的格式。我承认我不熟悉这种文件格式,但如果你用
xtree <- read.tree("test.tree")
plot(xtree)
你看到有一些未命名的提示。这些都是导致问题的原因。 read.table函数将这些值分配给NODE值而不是TIP值。你可以修复&#34;树,并获得与import_mothur
xtree$tip.label[c(26,28,30)]<-paste0("X", c(6,1,49))
phyloseq(xtree)
所以我猜你的newick格式文件有问题,或ape::read.tree
函数中有错误。