具有自定义距离矩阵的 Biopython 自举系统发育树

Biopython bootstrapping phylogenetic trees with custom distance matrix

我正在尝试创建自举系统发育树,但我不想使用原始多序列比对数据和标准评分系统,而是想使用我自己创建的自定义距离矩阵。我目前查看了 http://biopython.org/wiki/Phylo 并且能够使用我自己的自定义距离矩阵使用以下代码创建一棵树:

dm = TreeConstruction._DistanceMatrix(tfs,dmat)
treeConstructor  = DistanceTreeConstructor(method = 'upgma')
upgmaTree = treeConstructor.upgma(dm)
Phylo.draw(upgmaTree)

其中 dmat 是下三角距离矩阵,tfs 是用于 columns/rows 的名称列表。在查看引导示例时,似乎所有输入都需要是原始序列数据,而不是像我上面使用的距离矩阵,有人知道这个问题的解决方法吗? 谢谢!

简短回答:不,你不能使用距离矩阵来bootstrap系统发育。

长答案: bootstrapping 系统发育的第一步要求创建一组数据伪重复。对于 DNA 序列,核苷酸位置是从比对(整列)中随机抽取的,重复直到比对的总长度。

让我们假设一个 10 bp 长的比对,两个序列因两个突变而不同。为了简单起见,它们的距离是 d = 0.2.

AATTCCGGGG
AACTCCGGAG

引导这样的数据集需要位置 3、8、5、9、10、1、6、9、6、5 来表示伪复制。

set.seed(123)
sample(1:10, 10, replace = TRUE)
[1]  3  8  5  9 10  1  6  9  6  5

TGCGGACGCC
CGCAGACACC

我们获得了一个数据集,其变量(列)与原始比对相同,但出现频率不同。请注意 d = 0.3 在 bootstrapped 对齐中。

使用这种方法,我们可以 bootstrap 任何变量或包含多个变量的数据集。不能以这种方式使用距离矩阵,因为它表示已经处理过的信息。

解法:

在您自己的数据伪复制上重复计算自定义距离矩阵的过程。

# Your function to calculate a custom distance matrix
calc.dist <- function(dat) { ... }

nrep <- 100
reps <- lapply(1:nrep, FUN=function(i) calc.dist(dat[,sample(1:ncol(dat), ncol(dat), replace = TRUE)]))