2017-08-08 94 views
0

我試圖教自己如何爲R中的歷史語言學做系統發育。我找到了一個公共數據集(https://www.cs.rice.edu/~nakhleh/CPHL/IEDATA_112603),並且我想要從它得到一個Newick格式的樹,以便我可以按照這些指示將其可視化:https://www.r-phylo.org/wiki/HowTo/InputtingTrees。我在Max OS 10.12.6上運行R 3.4.1。如何在Mac OSX上從R中的原始形態數據創建Newick樹格式

這是我迄今爲止所做的。我複製了數據並使用R和文本編輯器將其轉換爲Nexus數據文件。由於Nexus(根據我的理解)無法區分單個字符1和2以及組合字符12,因此我將原始數據集中的所有值都轉換爲字母順序(a-q)中的字母。任何人都可以從這裏下載:https://ucla.box.com/s/i4fbeagcw8lombg3xuhczfk3h0y7v54m

問題是,我找不到任何指令或代碼或指導原始數據解釋爲樹。我找到了一個Python腳本(Convert csv to Newick tree),但我不知道Python。任何人都可以向我指出正確的軟件/庫/教程的方向,或者幫助我找出我的下一步應該是什麼?

+0

我瞭解IEDATA鏈接的方式,表中包含的數據不是樹形表示。需要根據模型計算樹。歷史語言學使用哪些模型?您轉換成Nexus格式的數據似乎沒有問題。 – nya

+1

謝謝。我終於找到了一位可以幫助我的同事,他證實了你的答案,Nya。我需要做的是使用Phangorn軟件包中的as.phydat()函數將R語言數據轉換爲「系統發育數據」。我這樣做的方式是在函數中指定「type = USER」,這讓我可以爲數據定義自己的級別。 https://cran.r-project.org/web/packages/phangorn/vignettes/phangorn-specials.pdf提供了更詳細的示例。它仍然有點凌駕於我的頭上,但我讓這些功能正常工作,所以我在那裏。 –

回答

2

我終於找到了一位能幫助我的同事。我不需要將數據轉換爲Newick或Nexus來製作一棵樹,我需要將它轉換爲phydat(請參閱Phangorn package for R)以從中製作一棵樹。我所做的就是使用Phangorn軟件包中的as.phydat()函數將R語言數據轉換爲「系統發育數據」。我這樣做的方式是在函數中指定「type = USER」,這讓我可以爲數據定義自己的級別。在cran.r-project.org/web/packages/phangorn/vignettes/...上有更詳細的例子。然後,我可以使用常規的Phangorn函數從中創建樹。

1

使用Phangorn可能是一個很好的方法在R(看看「構建系統發育樹」小插曲)。

browseVignettes(package = "phangorn") 

然而,正確推斷的樹,我會建議你使用一個「正確」的系統發育推斷軟件提供更多的選擇(phangorn是極好的探索性分析,但可以限制)。

我建議你使用BEAST軟件,該軟件有一個完整的系統發育語言學教程(https://www.luke.maurits.id.au/files/research/papers/beastling.pdf)。 github上的Luke Maurits教程很好解釋(https://github.com/lmaurits/BEASTling/blob/master/docs/tutorial.rst)。

此外,在您的NEXUS文件(12即狀態12)關於與曖昧角色的狀態你的問題,你可以在關係文件作爲(12)進行編碼。例如,這是一個有效的NEXUS格式:

#NEXUS 

BEGIN DATA; 
DIMENSIONS NTAX=2 NCHAR=3; 

MATRIX 
t1 1(12)2 
t2 111 
; 
END;