Вычислить каноническую форму филогенетического дерева
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