You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在系统发育树指定分支的指定位置添加内部节点?

在系统发育树指定分支插入内部节点的实现方法

具体实现步骤

要在分支5上距离父节点长度为t的位置插入内部节点,可借助phytools包的splitEdge()函数直接拆分目标分支,生成新的内部节点。以下是完整流程:

  1. 加载依赖包并生成示例树(与你提供的代码一致):
library(ape)
library(phytools)

# 生成含4个分类单元的系统发育树
tree <- rtree(4)
# 可视化并标注节点、分支编号,确认分支5的位置
plot(tree, no.margin=T, label.offset=0.1)
nodelabels()
tiplabels()
edgelabels()
  1. 定义插入位置t并执行分支拆分:
# 设定插入位置t(需小于分支5的原始长度)
t <- 0.2

# 先检查t是否合法,避免超出分支长度导致错误
if(t > tree$edge.length[5]) {
  stop("错误:t的值不能大于分支5的原始长度")
}

# 拆分分支5,插入内部节点
new_tree <- splitEdge(tree, edge=5, split=t)
  1. 可视化验证插入结果:
# 绘制新树,查看生成的内部节点
plot(new_tree, no.margin=T, label.offset=0.1)
nodelabels()
edgelabels()

函数说明

splitEdge()会将指定分支拆分为两段:

  • 第一段长度为t,连接原分支的父节点与新生成的内部节点;
  • 第二段长度为原分支长度减去t,连接新内部节点与原分支的子节点。

内容的提问来源于stack exchange,提问作者Carlo Meloni

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 21:05:13