4

apeパッケージを使用して、R で互いに反対の 2 つの系統発生をプロットしたいと思います。1 つのツリーには 40 個のノードがあり、1 つのツリーには 26 個のノードがあります。

library(ape)
tree1 <- rtree(40)
tree2 <- rtree(26)

このcophyloplot関数は、指定されたリンクを使用してこれらを向かい合わせにプロットします。

リンクの指定に困っています。

私の実際のnexusツリー ファイルでは、ヒント ラベルはテキストであることに注意してください (必要に応じて、これらを数値に変更する方法がわかりません...)。

リンクは次のようになります。

tree1nexus ファイルで、シーケンスのヒント ラベルが1 ~ 40 の場合。tree2nexus ファイルでは、ヒント ラベルは 1 ~ 26 です。次に、リンクは次のようになります。

a <- c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40)
b <- c(14,1,4,1,9,12,2,10,6,3,13,5,14,15,18,19,19,7,14,9,10,11,25,22,21,16,23,24,26,17,1,12,12,21,15,16,21,8,20,21) 
association <- cbind(a, b)

(つまり、 のシーケンス 1tree1は のシーケンス 14 とリンクされていますtree2)

したがって、次のようなものを使用してツリーをプロットします。

cophyloplot(tree1, tree2, assoc=association,length.line=4, space=28, gap=10, rotate=TRUE)

距離行列を計算します。

dist.topo(tree1, tree2, method = "PH85")

ここでどこが間違っているのかよくわかりません。どんな助けでも大歓迎です!

4

2 に答える 2

1

このcophyloplot関数は、ヒント ラベルのインデックス作成を必要としません。分類群をその名前で参照できます。lukeA の答えは、関連付けからの番号を として保存することに注意してくださいcharacter。それらをヒント ラベルに対応するテキストに変換し、2 つのツリーをプロットすると、同じ結果が得られます。

association <- apply(association, 2, function(x) sub("^","t", x))

head(association)
#      a    b    
# [1,] "t1" "t14"
# [2,] "t2" "t1" 
# [3,] "t3" "t4" 
# [4,] "t4" "t1" 
# [5,] "t5" "t9" 

cophyloplot(tree1, tree2, assoc=association, length.line=4, space=28, gap=3)

アソシエーションがマトリックスにリストされている順序は関係ありません。を使用して外部ファイルからインポートすることをお勧めしますread.table()

于 2016-05-23T13:15:47.137 に答える