Interactive Tree of Life Web ベースのツール(iTOL)を使用してツリー (クラスター) を作成したいと考えています。入力ファイル (または文字列) として、このツールはNewick 形式を使用します。これは、括弧とコンマを使用して辺の長さを持つグラフ理論ツリーを表す方法です。それに加えて、クラスターのノードのブートストラップ値などの追加情報がサポートされる場合があります。
たとえば、ここではパッケージを使用してクラスター分析用のデータセットを作成しました。clusterGeneration
library(clusterGeneration)
set.seed(1)
tmp1 <- genRandomClust(numClust=3, sepVal=0.3, numNonNoisy=5,
numNoisy=3, numOutlier=5, numReplicate=2, fileName="chk1")
data <- tmp1$datList[[2]]
その後、クラスター分析を実行し、パッケージを使用してブートストラップによってクラスターのノードのサポートを評価しました。pvclust
set.seed(2)
y <- pvclust(data=data,method.hclust="average",method.dist="correlation",nboot=100)
plot(y)
クラスタとブートストラップ値は次のとおりです。
Newick ファイルを作成するために、次のape
パッケージを使用しました。
library(ape)
yy<-as.phylo(y$hclust)
write.tree(yy,digits=2)
write.tree
関数は、ツリーを Newick 形式で出力します。
((x2:0.45,x6:0.45):0.043,((x7:0.26,(x4:0.14,(x1:0.14,x3:0.14):0.0064):0.12):0.22,(x5:0.28,x8:0.28 ):0.2):0.011);
これらの数値は、枝の長さ(クラスターのエッジの長さ) を表します。iTOLヘルプ ページ(「独自のツリーのアップロードと操作」セクション) の指示に従って、手動でブートストラップされた値を Newick ファイルに追加しました (以下の太字の値)。
((x2:0.45,x6:0.45) 74 :0.043,((x7:0.26,(x4:0.14,(x1:0.14,x3:0.14) 55 :0.0064) 68 :0.12) 100 :0.22,(x5:0.28 ,x8:0.28) 100 :0.2) 63 :0.011);
文字列を iTOL にアップロードすると正常に動作します。ただし、私は巨大なクラスターを持っており、手動で行うのは面倒です...
質問:手入力の代わりにそれを実行できるコードは何ですか?
ブートストラップ値は、次の方法で取得できます。
(round(y$edges,2)*100)[,1:2]
Newick ファイルの形成に使用される枝の長さは、次の方法で取得できます。
yy$edge.length
write.tree
デバッグ後に関数がどのように機能するかを理解しようとしました。しかし、内部的に関数を呼び出していることに気付き.write.tree2
、元のコードを効率的に変更して、Newick ファイルの適切な位置でブートストラップされた値を取得する方法がわかりませんでした。
どんな提案でも大歓迎です。