重复技巧标签删除:在R中导入系统发育树以进行比较

时间:2018-07-10 09:13:24

标签: r phylogeny

问题:

我正在尝试导入newick格式的系统发生树,我之前已经做过(以相同的方式制作树,因此代码可以工作!),但是树似乎是问题所在。我收到重复的提示标签错误。如果是这样,是否有办法轻松删除R中的重复提示?

当前代码:

library(ape)
library(geiger)
library(caper)


taxatree <- read.tree("test2.tre")
sumdata <- read.csv("ogtprop.csv")
    sumdataPGLS <-data.frame(A=sumdata$A,OGT=sumdata$OGT, Species=sumdata$Species)


sumdataPGLS$Species<-gsub(" ", "_", sumdata$Species)
#this line inserts an underscore between species and genus in my dataframe, (as the tree is formatted like this)

comp.dat <- comparative.data(taxatree, sumdataPGLS, "Species")

我在最后一行之后得到跟随错误:

Error in comparative.data(taxatree, sumdataPGLS, "Species") : 
  Duplicate tip labels present in phylogeny 

建议该问题纯粹是系统发育,而不是数据框。

所需结果:

一种删除R中重复的尖端标签的方法

输入数据:

不幸的是,树是如此之大,我无法将其全部放在此处,但是这里是数据的子集(请注意,这本身无法工作),如果有任何问题,我将在此处进行介绍对其他人显而易见的系统错误:

(((('Acidilobus_saccharovorans':4,'Caldisphaera_lagunensis':4)Acidilobales:4,
('Sulfurisphaera_tokodaii':4,('Metallosphaera_hakonensis':4,
'Metallosphaera_sedula':4)Metallosphaera:4,('Acidianus_sulfidivorans':4,
'Acidianus_brierleyi':4)Acidianus:4,('Sulfolobus_metallicus':4,
'Sulfolobus_solfataricus':4,'Sulfolobus_acidocaldarius':4)Sulfolobus:4)
Sulfolobaceae:4,(('Pyrolobus_fumarii':4,'Hyperthermus_butylicus':4,
'Pyrodictium_occultum':4)Pyrodictiaceae:4,('Aeropyrum_camini':4,
('Ignicoccus_hospitalis':4,'Ignicoccus_islandicus':4)Ignicoccus:4,   

3 个答案:

答案 0 :(得分:0)

一个可能的解决方案,因为问题似乎是输入到'phylo'类的树的格式,在这种情况下,内部节点具有名称,并且其中一些名称与属相同。

“清理”树的一种方法是对其进行格式化,我发现可以使用的方法是通过python软件包:ete3(http://etetoolkit.org/

from ete3 import Tree
import sys

t = Tree(sys.argv[1], format=1)

t.write(format=5, outfile="test4.tre")

有用的函数为t.write(format=5,格式= 5,表示它以R中使用的comparitive.data函数可接受的类型编写。在这种情况下,没有内部节点名称。

答案 1 :(得分:0)

我的比较数据遇到了相同的问题。我有:

maxillariinae <- comparative.data(tree_gs, data.000, spp_code, vcv=TRUE, vcv.dim=3)
>Error in comparative.data(tree_gs, data.000, spp_code, vcv = TRUE, vcv.dim = 3) : 
>Labels duplicated between tips and nodes in phylogeny

我已经用一种非常简单的方式解决了它:

# Removing node labels:
tree_gs$node.label<-NULL

然后,当我尝试设置比较数据时,它就起作用了。接下来我做的pgls也很好。 我希望它对您有用。

答案 2 :(得分:-1)

我遇到了同样的问题,因为我的Newick树除距离外还包括了引导程序支持值。 > comparative.data在删除支持值后运行良好。 (引导程序值为0.97 ..- 0.99 ..) 这是原始和修改后的树:

原始

((Alligator:0.09129139,(Turtle:0.12361699,(Lizard:0.18330984,
((TasmDevil:0.02519765,Opossum:0.01841396)0.998733:0.03121792,
(Armadillo:0.05330751,((Cow:0.12244558,Dog:0.07483858)0.983085:0.02485452,
(Mouse:0.14438626,GuineaPig:0.03974587)0.972224:0.02107559)0.889194:0.01974521)
0.99985:0.03529365)0.99985:0.18024398)0.988266:0.074151)0.974215:0.11888747)
:1.0964437,Frog:1.0964437):0.0;

修订

((Alligator:0.09129139,(Turtle:0.12361699,(Lizard:0.18330984,
((TasmDevil:0.02519765,Opossum:0.01841396):0.03121792,
(Armadillo:0.05330751,((Cow:0.12244558,Dog:0.07483858):0.02485452,
(Mouse:0.14438626,GuineaPig:0.03974587):0.02107559):0.01974521):0.03529365)
:0.18024398):0.074151):0.11888747):1.0964437,Frog:1.0964437):0.0;