2017-08-08 102 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;