[英]Color the tips of a phylogenetic tree by individual's species
我正在尝试使用此处定义的方法通过自举构建系统发育树。 因为我有一个庞大的数据集,所以绘制每个人的名字(在这个例子中,分别命名为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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.