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