首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在系统发育中如何从节点路径中识别边缘数?

在系统发育中如何从节点路径中识别边缘数?
EN

Stack Overflow用户
提问于 2019-04-26 18:44:24
回答 1查看 1.1K关注 0票数 1

我试图识别系统发育树中由一对节点分隔的边缘数。例如,假设内部分支1由节点2223绑定。当然,这可以用nodelabels()edgelabels()在视觉上完成,但是我正在用数千条提示进行系统发育,因此需要一种自动化的方法。

是否有命令将节点号与边缘号匹配?

EN

回答 1

Stack Overflow用户

发布于 2019-05-08 00:56:32

可以将存储在phylo对象中的边缘表作为$edge使用。

代码语言:javascript
运行
复制
## A random tree
tree <- rtree(5)
tree$edge
#     [,1] [,2]
#[1,]    6    7
#[2,]    7    1
#[3,]    7    2
#[4,]    6    8
#[5,]    8    3
#[6,]    8    9
#[7,]    9    4
#[8,]    9    5

读取这些表的方法是:行号是边号(您想要的是什么),第一列是父节点,第二列是子提示/节点:

代码语言:javascript
运行
复制
## The edge table
edge_table <- tree$edge
rownames(edge_table) <- paste("edge", 1:nrow(edge_table), sep = ""))
colnames(edge_table) <- c("parent", "child")
edge_table
#      parent child
#edge1      6     7
#edge2      7     1
#edge3      7     2
#edge4      6     8
#edge5      8     3
#edge6      8     9
#edge7      9     4
#edge8      9     5

节点/提示1到5 (Ntip(tree))是提示,然后,6是到达Ntip(tree) + Nnode(tree)的第一个节点(例如根)。

若要根据节点选择任何边缘,可以运行以下命令:

代码语言:javascript
运行
复制
## Getting the nodes of interest
nodes_of_interest <- c(6, 7, 8)

## Getting the edges connecting to the nodes
edge_parent <- rownames(edge_table)[edge_table[,1] %in% nodes_of_interest]
edge_child  <- rownames(edge_table)[edge_table[,2] %in% nodes_of_interest]

这当然可以推广到任何树的大小(例如8000+),因为所有的边缘属性都是自动的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55873364

复制
相关文章

相似问题

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