【发布时间】:2021-01-14 16:30:57
【问题描述】:
如果为n个核酸序列构建了一个词频表(序列ATG对应长度为2的两个词,AT和TG),则可以使用该表(直接或之后通过 PCA 降维)来计算这些序列的距离矩阵,然后可以将其聚类成系统发育树(doi:10.1007/s00285-002-0185-3):
library(sequinr)
Bat1 <- read.fasta(file="bat1.FASTA")
Bat1.seq <- Bat1[[1]]
Bat1.count <- as.vector(count(Bat1.seq, 2)) # count word frequencies, k < log4(Sequence length)
...
Counts <- rbind(Bat1.count, ...)
rownames(Counts) <- c("Bat1", ...)
colnames(Counts) <- c(rownames(count(Bat1.seq, 2)))
RowCounts <- rowSums(Counts)
Counts.norm <- Counts/RowCounts # normalise word counts for different sequence length
distance <- dist(Counts.norm, method = "euclidian")
hc <- hclust(distance, method = "average")
plot(hc)
这出奇的好,输出看起来类似于用 ClustalX 进行多序列比对得到的树,但计算时间是几秒而不是几小时。
问题:如何衡量这些树的质量,以选择最佳字长 k 或(如果使用 PCA)最佳组件数 q,还有距离和聚类方法? 最好不要使用随机序列进行冗长的引导;-)。
【问题讨论】:
-
我认为没有直接与参考树比较(计算 Robinson-Foulds 值)来量化树质量的方法。您可以尝试更改 k 和 q 值来判断树的稳定性(祖先是否会改变?)。
-
您可能会在biology.stackexchange.com得到更好的回复
标签: r tree bioinformatics phylogeny clustal