我正在使用 Python 包ete3
。我有树,例如:
((Species1_order1,(Species2_order2,Species3_order2)),Species4_order3,Species5_order5);
我想查看与树中特定节点最密切相关的叶子(这里的树是Species1_order1
)。在示例中,最密切相关的叶子是Species2_order2
/Species3_order2
和Species4_order3
/ Species5_order5
。
代码:
tree = ete3.Tree('((Species1_order1, \
(Species2_order2, Species3_order2)), \
Species4_order3, Species5_order5);')
新示例:
tree=ete3.Tree('((((((A,B),C),D),(E,F)),G),(H,I));')
我得到的结果是:
A B C D E F G H I
A 0.0 2.0 3.0 4.0 6.0 6.0 6.0 8.0 8.0
B 2.0 0.0 3.0 4.0 6.0 6.0 6.0 8.0 8.0
C 3.0 3.0 0.0 3.0 5.0 5.0 5.0 7.0 7.0
D 4.0 4.0 3.0 0.0 4.0 4.0 4.0 6.0 6.0
E 6.0 6.0 5.0 4.0 0.0 2.0 4.0 6.0 6.0
F 6.0 6.0 5.0 4.0 2.0 0.0 4.0 6.0 6.0
G 6.0 6.0 5.0 4.0 4.0 4.0 0.0 4.0 4.0
H 8.0 8.0 7.0 6.0 6.0 6.0 4.0 0.0 2.0
I 8.0 8.0 7.0 6.0 6.0 6.0 4.0 2.0 0.0
但是例如 E 和 F 在树中与 A、B、C 和 D 的距离相等,因此它们似乎比 D 更衣。
一个好的矩阵结果应该是:
A B C D E F G H I
A 0 1 2 3 4 4 5 6 6
B 1 0 2 3 4 4 5 6 6
C 2 2 0 3 4 4 5 6 6
D 3 3 3 0 4 4 5 6 6
E 4 4 4 4 0 1 5 6 6
F 4 4 4 4 1 0 5 6 6
G 5 5 5 5 5 5 0 6 6
H 6 6 6 6 6 6 6 0 1
I 6 6 6 6 6 6 6 1 0
是不是 ?