根据个体的物种对系统发育树的尖端进行着色

时间:2016-09-30 14:32:11

标签: r tree bioinformatics phylogeny ape

我正在尝试使用定义的方法here来构建具有自举的系统发育树。绘制每个人的名字(为了这个例子而命名为1,2,3,4,...)并不提供信息,因为我有一个巨大的数据集。因此,我希望将提示涂上颜色以反映个体的种类。单个物种信息存储在称为物种的分离矩阵中:

species = data.frame(Ind=c(1 ,2  ,3  ,4  ,5 ),
                     Spe=c("s1","se1","se2","se2","se3"))

然而,每当我尝试用fit $ tree $ label替换其物种的个体名称时,唯一的结果就是移除了载体。可能这是因为fit是pml类的一个对象,我生成的策略与我的策略有冲突,但我不确定。有没有办法根据个别物种对树的尖端进行着色?我的代码现在看起来像这样:

library(phangorn)
#Create a tree from data in fasta format
dat = read.phyDat(file = "myalignment.fasta", format ="fasta")
tree <- pratchet(dat)          # parsimony tree
mt <- modelTest(dat, tree=tree, multicore=TRUE)
mt[order(mt$AICc),]
bestmodel <- mt$Model[which.min(mt$AICc)]
env = attr(mt, "env")
fitStart = eval(get("GTR+G+I", env), env)
fit = optim.pml(fitStart, rearrangement = "stochastic", optGamma=TRUE, optInv=TRUE, model="GTR")
bs = bootstrap.pml(fit, bs=100, optNni=TRUE, multicore=TRUE)

#Replace the names with the species...
fit$tree$tip.label <- species[which(species[,1] == fit$tree$tip.label),2]
#If I print fit$tree$tip.label here, the output is factor(0)

#...and create the tree with colored tips
plotBS(midpoint(fit$tree), bs, p = 50, type="p", show.tip.label = FALSE)
tiplabels(pch=19, col = as.factor(fit$tree$tip.label), adj = 2.5, cex = 2)

可重复的示例

使用名称“myalignment.fasta”保存以下内容并运行上面的代码。它应该创建一个玩具示例:

>1
AACCAGGAGAAAATTAA
>2
AAAAA---GAAAATTAA
>3
ACACAGGAGAAAATTAA
>4
AACCTTGAGAAAATTAT
>5
CCTGAGGAGAAAATTAA

1 个答案:

答案 0 :(得分:1)

因此,如果您的问题是列表绘制点作为颜色而不是标签,您可以

tiplabels(pch=19, cex=2, 
    col = species$Spe[match(fit$tree$tip.label, species$Ind)])

为了确保标签与物种相匹配,我做了一些雌性动物(虽然它们在这个例子中的顺序相同)。

enter image description here