R:APE/Phylobase:超測定、バイナリツリーをHclustオブジェクトに変換できません(警告メッセージ)
-
09-10-2019 - |
質問
APE関数を使用して、clustalw2ツリーをRでインポートしました read.tree
APEパッケージの関数。クロノプル関数を使用して分子年齢を推定し、超測定されたバイナリツリーをもたらします。そこから、樹状図オブジェクトに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
解決
Linux上のR 2.12.1ベータ(2010-12-07 R53808)の下で、APEのバージョン2.6-2でこれを再現できますが、コードはAPEのバージョン2.5-3で動作します。
これは、バグがパッケージに忍び込んだことを示唆しており、開発者に問題を知らせるために専門家のアドバイスを求める必要があります。メンテナーのエマニュエル・パラディスのメールアドレスは 類人猿用のクランパッケージ
他のヒント
問題は、Chronoplがルートされていないか、多微細なルートを持つツリーを返していることです(解釈方法によって異なります)。また、as.hclust.phyloには、役に立たないエラーメッセージがありました。
これ:
modded.tree <- drop.tip(test.tree.nu,c(
'An16g06590','An02g12505','An11g00390','An14g01130'))
ルートから下降する3つのクレードのいずれかからすべてのヒントを削除するため、
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はwrite.tree()を持っているため、newickファイルを生成します。