首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >系统发育分析软件(BAMM)错误消息告诉我,我的系统发育具有非正分支长度。我对此进行了更改,但错误仍然存在

系统发育分析软件(BAMM)错误消息告诉我,我的系统发育具有非正分支长度。我对此进行了更改,但错误仍然存在
EN

Stack Overflow用户
提问于 2019-11-15 19:37:53
回答 1查看 87关注 0票数 0

我的系统发展史来自一份出版物,是BEAST的共识树,众所周知,BEAST引入了非正分支长度。我已经检查了"-“和"0”的系统发展史,它应该揭示非正的分支长度,并发现了一个零长度的分支,我将其更改为0.0000001。然而,这似乎并没有解决我的问题。是否有一个功能来检查给定的系统发展史,例如检查这样的分支长度并改变它们,检查单例,等等。树是完全分叉的,所以我不需要再次检查。

EN

回答 1

Stack Overflow用户

发布于 2019-11-19 09:19:42

如果没有一个可重复的例子,很难判断你的问题实际上源于哪里,但根据你所说的,问题可能来自于添加0.0000001,这使得树不再是超度量( +0.0000001分支的所有后代都比其他分支更长)。您可以尝试使用dispRity::remove.zero.brlen函数来解决此问题:

代码语言:javascript
复制
library(ape)
library(dispRity)
## Creating a random ultrametric tree
set.seed(1)
tree <- ape::rcoal(10)

## Introducing a zero branch length
tree$edge.length[17] <- tree$edge.length[17] + tree$edge.length[15]
tree$edge.length[16] <- tree$edge.length[16] + tree$edge.length[15]
tree$edge.length[15] <- 0

## Checking ultrametricity
ape::is.ultrametric(tree)
# [1] TRUE

## Checking zero branch lengths
any(tree$edge.length == 0)
# [1] TRUE

您正在使用的方法删除了树的超度量属性:

代码语言:javascript
复制
## Adding a really small branch length (does not conserve ultrametricity)
tree_bad <- tree
tree_bad$edge.length[15] <- 0.0000001

## Checking ultrametricity
ape::is.ultrametric(tree_bad)
# [1] FALSE

## Checking zero branch lengths
any(tree_bad$edge.length == 0)
# [1] FALSE

您可以改用dispRity::remove.zero.brlen,它增加了最小分支长度的1%,但保留了树的属性:

代码语言:javascript
复制
tree_good <- tree

## Removing zero branch lengths
tree_good <- dispRity::remove.zero.brlen(tree_good)

## Checking ultrametricity
ape::is.ultrametric(tree_good)
# [1] TRUE

## Checking zero branch lengths
any(tree_good$edge.length == 0)
# [1] FALSE
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58876276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档