0

ここで定義されている方法論を使用して、ブートストラップで系統樹を構築しようとしています。私は巨大なデータセットを持っているので、各個人の名前(この例のために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
4

1 に答える 1