基于自定义距离矩阵的Biopython自举系统发生树

2024-09-28 22:23:53 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

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


Tags: 数据距离标准系统序列矩阵dm评分
1条回答
网友
1楼 · 发布于 2024-09-28 22:23:53

简而言之:不,您不能使用距离矩阵来引导系统发育。在

长回答: 引导系统发育的第一步需要创建一组数据伪复制。对于DNA序列,核苷酸位置是从排列(整个列)中随机抽取的,重复次数达到排列的总长度。在

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

AATTCCGGGG
AACTCCGGAG

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

^{pr2}$

我们获得了一个数据集,其中的变量(列)与原始对齐方式相同,但出现频率不同。注意在引导对齐中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)]))

相关问题 更多 >