我为蛋白质家族建立了系统发育树,可以将其分为不同的组,并根据其受体类型或响应类型对其进行分类。树中的节点被标记为受体的类型。
在系统发育树中,我可以看到属于相同基团或受体类型的蛋白质在同一分支中聚集在一起。因此,我想折叠这些具有共同标签的分支,并按给定的关键字列表对它们进行分组。
该命令将是这样的:
./collapse_tree_by_label -f phylogenetic_tree.newick -l list_of_labels_to_collapse.txt -o塌陷的tree.eps(或pdf)
我的list_of_labels_to_collapse.txt像这样:ABCD
我的newick树将像这样:(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)
输出图像没有崩溃,就像这样: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)
您存储在R中的树已经将提示存储为多面体。只需用代表多面体的三角形绘制树即可。
ape
我知道没有执行此操作的功能,但是如果您对绘图功能有些混乱,可以将其关闭
# Step 1: make edges for descendent nodes invisible in plot:
groups <- c("A", "B", "C", "D")
group_edges <- numeric(0)
for(group in groups){
group_edges <- c(group_edges,getMRCA(tree.test,tree.test$tip.label[grepl(group, tree.test$tip.label)]))
}
edge.width <- rep(1, nrow(tree.test$edge))
edge.width[tree.test$edge[,1] %in% group_edges ] <- 0
# Step 2: plot the tree with the hidden edges
plot(tree.test, show.tip.label = F, edge.width = edge.width)
# Step 3: add triangles
add_polytomy_triangle <- function(phy, group){
root <- length(phy$tip.label)+1
group_node_labels <- phy$tip.label[grepl(group, phy$tip.label)]
group_nodes <- which(phy$tip.label %in% group_node_labels)
group_mrca <- getMRCA(phy,group_nodes)
tip_coord1 <- c(dist.nodes(phy)[root, group_nodes[1]], group_nodes[1])
tip_coord2 <- c(dist.nodes(phy)[root, group_nodes[1]], group_nodes[length(group_nodes)])
node_coord <- c(dist.nodes(phy)[root, group_mrca], mean(c(tip_coord1[2], tip_coord2[2])))
xcoords <- c(tip_coord1[1], tip_coord2[1], node_coord[1])
ycoords <- c(tip_coord1[2], tip_coord2[2], node_coord[2])
polygon(xcoords, ycoords)
}
然后,您只需要在组中循环以添加三角形
for(group in groups){
add_polytomy_triangle(tree.test, group)
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句