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