Biopython引导系统发育树与自定义距离矩阵

时间:2016-07-25 21:24:22

标签: python biopython phylogeny

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

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

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

1 个答案:

答案 0 :(得分:1)

简答:不,你不能使用距离矩阵来引导系统发育。

答案很长: 引导系统发育的第一步是创建一组数据伪复制。对于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。

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

<强>解决方案:

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

# 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)]))