2011-09-16 84 views
4

如何將樹(這是我的Java程序的輸出)轉換爲R中的樹狀圖?如何將樹轉換爲R中的樹狀圖?

目前,我使用here給出的建議將樹轉換爲Newick格式。然後我用ape包中的R讀取Newick格式的樹:

library("ape") 
cPhylo <- read.tree(file = "gc.tree") 

最後我在R中,使用as.hclust樹轉換成樹狀圖:

dendrogram <- as.hclust(gcPhylo) 

然而,樹狀要求分支長度。雖然我插入分支長度,我收到一個錯誤說這棵樹是不是超度量:

在as.hclust.phylo(gcPhylo)錯誤:樹是不是超度量

我猜插入分支長度時,我做錯了什麼。

有沒有其他方法可以遵循?或者,如何在將樹轉換爲Newick格式時插入分支長度?相等的分支長度會很好。

+0

見'as.hclust'的幫助 - 這隻能從類轉換對象'twins'什麼? 'hclust'。因此你的代碼肯定無法工作。至於如何讓它工作,我很抱歉,但我沒有線索。 – Andrie

+0

然後,這意味着與分支長度無關。所以它不可能使用as.hclust轉換它。然後我需要找到另一種方法。 – Burcu

回答

2

我認爲問題其實是你的「gc.tree」不是超密度的。確保從根部到每個尖端的距離相同。下面的代碼工作:

library('ape') 
tree <- read.tree(text='(((A:4.2,B:4.2):3.1,C:7.3):6.3,D:13.6);') 
is.ultrametric(tree) 
is.binary.tree(tree) 
is.rooted(tree) 
hc <- as.hclust.phylo(tree) 

但讓樹非超度量(注意D的分支長度):

tree <- read.tree(text='(((A:4.2,B:4.2):3.1,C:7.3):6.3,D:15);') 

和as.hclust.phylo會引發錯誤。

2

這是一個老問題,但到目前爲止答案還不夠完善。因爲我有同樣的問題,我的googlefoo是有找到答案的問題,在這裏你去:

library("ape") 
cPhylo <- read.tree(file = "gc.tree") 
dendrogram <- chronos(cPhylo) 
4

這是一個老問題,但以前所有的答案都需要樹被轉換之前進行超度量到樹狀圖對象。

可以使用DECIPHER包讀取從Newick格式文件樹形圖的對象:

dend <- ReadDendrogram(path_to_newick_file)