R:从任意特征构建系统发育树?

R: Building phylogenetic tree from arbitrary features?

StackExchange。

我正在尝试使用 R 为超过 100 个个体构建系统发育树。

然而,虽然 APE 和 ggtree 等软件包的教程很容易展示如何使用原始 DNA 或预先排序的分组(例如 (((A,B),(C,D)) ,E)), 我的数据采用从整个基因组组装的机器编号标签列表的形式。

例如:

sample <- c("A", "B", "C"...)
ID <- c("1 2 4 5", "2 4 5", "1 2 3 5"...)
df <- data.frame(sample, ID)
sample ID
A 1 2 4 5
B 2 4 5
C 1 2 3 5

我正在努力弄清楚如何(或者即使可能)从这种任意编号中构建系统发育。有人熟悉吗? (Rooted/unrooted/circular不是特别重要)

感谢阅读!

(系统发育)树只是样本的层次聚类。唯一需要做的就是定义所有样本对之间的差异性度量。 在您的情况下,每一行都有一组数字,因此我们可以为此使用 Jaccard。比如样本B的所有元素在样本A中也都有,所以在树中应该并排放置:

library(tidyverse)
library(proxy)

sample <- c("A", "B", "C")
ID <- c("1 2 4 5", "2 4 5", "1 2 3 5")
df <- data.frame(sample, ID)
df
#>   sample      ID
#> 1      A 1 2 4 5
#> 2      B   2 4 5
#> 3      C 1 2 3 5

distances <- 
  df %>%
  separate_rows(ID) %>%
  mutate(has_ID = 1) %>%
  pivot_wider(names_from = ID, values_from = has_ID, values_fill = list(has_ID = 0)) %>%
  column_to_rownames("sample") %>%
  proxy::dist(by_rows = TRUE, method = "Jaccard")
distances
#>      A    B
#> B 0.25     
#> C 0.40 0.60

distances %>%
  hclust() %>%
  plot()

reprex package (v2.0.0)

创建于 2022-05-13