4

read.treeape 関数とape パッケージの関数を使用して、R に ClustalW2 ツリーをインポートしました。私は chronopl 関数を使用して分子年齢を推定し、ウルトラメトリックな二分木を作成しました。そこから樹状図オブジェクトで R ビルドを作成したいと考えています。

木はきれいにプロットされ、本物のファイロ オブジェクトです。ただし、変換しようとすると問題が発生します。

最小限の作業例:

require(ape)
test.tree <- read.tree(file = "testree.phylip", text = NULL, tree.names = NULL, skip = 0,
    comment.char = "#", keep.multi = FALSE)

test.tree.nu <- chronopl(test.tree, 0, age.min = 1, age.max = NULL,
node = "root", S = 1, tol = 1e-8,
CV = FALSE, eval.max = 500, iter.max = 500)

is.ultrametric(test.tree.nu)
is.binary.tree(test.tree.nu)
treeclust <- as.hclust.phylo(test.tree.nu)

結果のツリーは問題なく「見える」ので、ツリーがウルトラメトリックおよびバイナリではないことを確認するためにテストし、それを hclust オブジェクトに変換して、最終的にその樹状図オブジェクトを作成します。

> is.binary.tree(test.tree.nu)
[1] TRUE
> is.ultrametric(test.tree.nu)
[1] TRUE

ツリーから hclust オブジェクトを作成しようとすると、次のエラーが発生します。

> tree.phylo <- as.hclust.phylo(test.tree.nu)
Error in if (tmp <= n) -tmp else nm[tmp] : 
  missing value where TRUE/FALSE needed
In addition: Warning message:
In nm[inode] <- 1:N :
  number of items to replace is not a multiple of replacement length

これは非常に詳細な質問であり、特定のパッケージに特に関連する質問は別の場所で尋ねたほうがよいかもしれませんが、誰かが私を助けてくれることを願っています.

すべての助けに感謝します。

よろしく、

ファイルのダウンロード

Phylip ファイルはhttp://www.box.net/shared/rnbdk973jaからダウンロードできます 。

4

2 に答える 2

2

Linux の R 2.12.1 ベータ版 (2010-12-07 r53808) のバージョン 2.6-2 の ape でこれを再現できますが、コードはバージョン 2.5-3 の ape で動作します。

これはバグがパッケージに忍び込んだことを示唆しており、開発者に問題を知らせて専門家のアドバイスを求める必要があります。メンテナの Emmanuel Paradis の電子メール アドレスは、ape の CRAN パッケージにあります。

于 2010-12-13T16:39:58.660 に答える
2

問題は、 chronopl が、ルートのないツリー、または複数の分岐ルートを持つツリーを返すことです (解釈方法によって異なります)。また、as.hclust.phylo には役に立たないエラー メッセージがあります。

これ:

modded.tree <- drop.tip(test.tree.nu,c(
'An16g06590','An02g12505','An11g00390','An14g01130'))

ルートから下る 3 つのクレードの 1 つからすべての先端を削除します。

is.ultrametric(modded.tree)
is.binary.tree(modded.tree)
is.rooted(modded.tree)

すべてが TRUE を返します。

treeclust <- as.hclust.phylo(modded.tree)

. 多分岐ツリーを表す hclust オブジェクトが本当に必要だと思いますが、hclust オブジェクトはそれらを処理できますが、as.hclust.phylo (パッケージ 'ape' から) は何らかの理由で多分岐では機能しません。newick ファイルを hclust オブジェクトにインポートする方法を知っている場合、それは前進する方法かもしれません - ade には newick ファイルを生成するための write.tree() があります。

于 2011-11-20T21:15:05.890 に答える