我为一个蛋白质家族构建了一个系统发生树,它可以被分成不同的组,根据受体类型或React类型对每个组进行分类,树中的节点被标记为受体类型。
在系统发生树中,我可以看到属于同一组或同一类型受体的蛋白质聚集在同一个分支中,所以我想折叠这些具有共同标签的分支,根据给定的关键词列表将它们分组。
该命令类似于以下内容:
./标签折叠树-f系统树. newick-l标签折叠树列表. txt-o折叠树. eps(或pdf)
我的list_of_labels_to_collapse. txt应该是这样的:阿拉伯联合酋长国
我的纽克树应该是这样的:(第一组:0.05,第二组:0.03,第三组:0.2,第四组:0.1):0.9,((第一组:0.05,第二组:0.02,第三组:0.04):0.6,(第一组:0.6,第二组:0.08):0.7):0.5,(第一组:0.3,第二组:0.4,第三组:0.5,第四组:0.7,第五组:0.4):1.2)
未塌陷的输出图像如下所示:http://i.stack.imgur.com/pHkoQ.png
输出图像折叠应如下所示(collapsed_tree. eps):http://i.stack.imgur.com/TLXd0.png
三角形的宽度应表示分支长度,三角形的高度必须表示分支中的节点数。
我一直在R中玩"猿"包,我能够绘制出一个系统发生树,但我仍然不知道如何通过标签中的关键字来折叠分支:
require("ape")
这将加载树:
cat("((A_1:0.05,A_2:0.03,A_3:0.2,A_4:0.1):0.9,(((B_1:0.05,B_2:0.02,B_3:0.04):0.6,(C_1:0.6,C_2:0.08):0.7):0.5,(D_1:0.3,D_2:0.4,D_3:0.5,D_4:0.7,D_5:0.4):1.2):0.5);", file = "ex.tre", sep = "\n")
tree.test <- read.tree("ex.tre")
下面应该是崩溃的代码
这将绘制树:
plot(tree.test)
5条答案
按热度按时间zzlelutf1#
存储在R中的树已经将顶点存储为多角剖分,只需要用三角形表示多角剖分来绘制树。
据我所知,
ape
中没有这样的函数,但是如果您稍微修改一下绘图函数,您可以将其关闭然后,您只需循环遍历这些组以添加三角形
z31licg02#
我也一直在寻找这种工具,不是为了折叠分类群,而是为了基于数字支持值折叠内部节点。
ape包中的di2multi函数可以将节点折叠成多边形,但目前它只能通过分支长度阈值来实现,下面是一个粗略的修改,允许通过节点支持值阈值(默认阈值= 0.5)来折叠。
使用风险自担,但它对我的根贝叶斯树起作用。
8wtpewkr3#
这是我基于
phytools::phylo.toBackbone
函数的答案,请参见http://blog.phytools.org/2013/09/even-more-on-plotting-subtrees-as.html和http://blog.phytools.org/2013/10/finding-edge-lengths-of-all-terminal.html。首先,在代码末尾加载函数。编辑:我没有试过这个,但它可能是另一个答案:“将树的顶端分支(即粗细或)转换为三角形的脚本和函数,两者的宽度与某些参数(例如,进化枝的物种数)相关(tip.branches.R)”https://www.en.sysbot.bio.lmu.de/people/employees/cusimano/use_r/index.html
z9smfwbn4#
我认为脚本终于达到了我的目的。根据@CactusWoman提供的答案,我对代码做了一些修改,这样脚本将尝试找到与我的搜索模式匹配的最大分支的MRCA。这解决了不合并非多分支分支的问题,或者因为一个匹配节点错误地位于正确分支之外而折叠整个树的问题。
此外,我还包括了一个参数,它表示给定分支中模式丰度比的限制,因此我们可以选择并折叠/分组至少90%的尖端与搜索模式匹配的分支。
fnx2tebb5#
这并不能解决把进化枝描述成三角形的问题,但它确实有助于折叠低支持度的节点。
ggtree
库有一个函数as.polytomy
,可以用来根据支持度值折叠节点。例如,要将引导数据库压缩到50%以下,可以用途: