我尝试使用Python中的ETE2模块创建树。我想将1个子节点添加到2个父节点,以便在显示树时它们都连接到子节点。我是ETE的新手,所以如果这是一个简单的问题,请原谅我。 代码:
from ete2 import Tree, TreeNode, TextFace
classes = Tree()
#adding 1
course1 = TreeNode(name="Course 1")
face1 = TextFace(text="Course 1")
course1.add_face(face1, column=1)
classes.add_child(child=course1)
#adding 2
course2 = TreeNode(name="Course 2")
face2 = TextFace(text="Course 2")
course2.add_face(face2, column=1)
course1.add_child(child=course2)
#adding 3
course3 = TreeNode(name="Course 3")
face3 = TextFace(text="Course 3")
course3.add_face(face3, column=1)
#adding course3 to 2 parents
course1.add_child(child=course3)
course2.add_child(child=course3)
classes.show()
输出为
我从根本上反对这里有一棵树的想法吗? ETE有一种简单的(r)方法可以做我提出的建议吗?
如果您需要更多信息,请与我们联系。
答案 0 :(得分:1)
我基本上找到了自己问题的答案:我应该使用的数据结构不是树。 @boardrider指出树本身就是一对“结构”,将一个父节点映射到一个或多个子节点。
解决方案是有向无环图。这是图形数据结构的变体,其映射“多对多”以继续从上面的措辞。
资源:
Python specific graph structures
随着我的进步,我会编辑这个。