Вычислите каноническую форму филогенетического дерева
Pointers
= getcanonical(Tree
)
[Pointers, Distances, Names
]
= getcanonical(Tree
)
возвращает указатели для канонической формы филогенетического дерева (Pointers
= getcanonical(Tree
)Tree
). В каноническом дереве листы упорядочены в алфавитном порядке, и ветви упорядочены сначала их шириной и затем в алфавитном порядке их первым элементом. Каноническое дерево изоморфно ко всем деревьям с тем же скелетом независимо от порядка их листов и ветвей.
[
возвращается, в дополнение к указателям, описанным выше, переупорядоченные расстояния (Pointers, Distances, Names
]
= getcanonical(Tree
)Distances
) и имена узла (Names
).
Создайте два филогенетических дерева с тем же скелетом, но немного отличающимися расстояниями.
b = [1 2; 3 4; 5 6; 7 8;9 10]; tr_1 = phytree(b,[.1 .2 .3 .3 .4 ]'); tr_2 = phytree(b,[.2 .1 .2 .3 .4 ]');
Постройте деревья.
plot(tr_1) plot(tr_2)
Проверяйте, имеют ли деревья изоморфную конструкцию.
isequal(getcanonical(tr_1),getcanonical(tr_2)) ans = 1