3

我有用 Java 编写的聚类代码,我可以从中创建一个嵌套的树结构,例如,下面显示了树的一小部分,其中两个“isRetired”对象在第一次迭代中被聚类,并且该组与“setIsRequired”聚类"在第五次迭代中。簇中对象之间的距离显示在括号中。

  |+5 (dist. = 0.0438171125324851)
    |+1 (dist. = 2.220446049250313E-16)
      |-isRetired
      |-isRetired
    |-setIsRetired

我更愿意以更传统的树状图风格呈现我的结果,看起来 R 有一些不错的功能,但由于我对 R 知之甚少,我不清楚如何利用它们。

我是否可以从 Java 将树结构写到文件中,然后用几行 R 代码生成树状图?在 R 程序中,我想做类似的事情:

  1. 从文件读入数据结构(“hclust”对象?)
  2. 将数据结构转换为树状图(使用“as-dendrogram”?)
  3. 使用“绘图”显示树状图

我想问题归结为 R 是否提供了一种从文件中读取并将该字符串输入转换为(hclust)对象的简单方法。如果是这样,输入文件中的数据应该是什么样的?

4

2 回答 2

3

我认为您正在寻找的是phylog。您可以用 Newick 表示法将您的树打印在一个文件中,将其解析出来并构建一个您可以轻松可视化的 phylog 对象。网页末尾给出了如何执行此操作的示例。您可能还需要考虑phylobase。尽管您不需要这些包提供的全部功能,但您可以搭载它们用来表示树的结构及其绘图功能。

编辑:在此处提供更简单的解决方案之前,您似乎已经提出了类似的问题。所以基本上你需要在这里编写代码的唯一事情就是你的 Newick 解析器或你想要从 Java 输出的任何其他表示的解析器。

于 2011-05-11T01:25:13.220 回答
0

猿(系统发育和进化分析)包包含树状图绘制功能,它能够读取Newick 格式的树。因为它是一个可选包,所以您需要安装它。它在理论上很容易使用,例如以下命令会生成树状图:

> library("ape")
> gcPhylo <- read.tree(file = "gc.tree")
> plot(gcPhylo, show.node.label = TRUE)

使用 APE 生成的树状图

到目前为止,我的主要抱怨是当包含 Newick 格式的树信息的文件的语法出现问题时,几乎没有诊断信息。我已经成功地使用其他工具读取了这些相同的文件(在某些情况下,这可能是因为这些工具可以原谅语法中的某些错误)。

您还可以使用 phylog 包生成树状图,如下所示。

> library(ade4)
> newickString <- system("cat gc.tree", intern = TRUE)
> gcPhylog <- newick2phylog(newickString)
> plot(gcPhylog, clabel.nodes=1)

使用 Phylog 生成的树状图

两者都可以处理 Newick 格式的树,并且都有许多绘图选项。

于 2011-05-16T04:47:31.387 回答