cluster (phytree)

Проверьте кластеры в филогенетическом дереве

Синтаксис

LeafClusters = cluster(Tree, Threshold)
[LeafClusters, NodeClusters] = cluster(Tree, Threshold)
[LeafClusters, NodeClusters, Branches] = cluster(Tree, Threshold)
cluster(..., 'Criterion', CriterionValue, ...)
cluster(..., 'MaxClust', MaxClustValue, ...)
cluster(..., 'Distances', DistancesValue, ...)

Входные параметры

Tree

Филогенетический древовидный объект, созданный с помощью phytree функция конструктора.

Threshold

Скаляр, задающий пороговое значение.

CriterionValue

Вектор символов или строка, задающая критерий для определения количества кластеров как функции от видовых парных расстояний. Варианты:

  • 'maximum' (по умолчанию) - Максимальное парное расстояние в кластере (Wmax). Разделение кластера останавливается, когда WmaxThreshold.

  • 'median' - Медиана в пределах парного расстояния кластера (Wmed). Разделение кластера останавливается, когда WmedThreshold.

  • 'average' - Среднее значение в пределах парного расстояния кластера (Wavg). Разделение кластера останавливается, когда WavgThreshold.

  • 'ratio' - Между/внутри кластера парное отношение расстояния, заданное как

    BWrat = (trace (B )/( k - 1) )/( трассировка (W )/( n - k))

    где B и W являются матрицами between- и within-scatter, соответственно. k - количество кластеров, а n - количество видов на дереве. Разделение кластера останавливается, когда BWratThreshold.

  • 'gain' - В кластере парное усиление расстояния, заданное как

    Wgain = (трассировка (Wold )/( трассировка (W) - 1) * (n - k - 1))

    где W и Wold являются матрицами внутри-рассеяния для k и k - 1, соответственно. k - количество кластеров, а n - количество видов на дереве. Разделение кластера останавливается, когда WgainThreshold.

  • 'silhouette' - Средняя ширина силуэта (SWavg). SWavg области значений от -1 на +1. Разделение кластера останавливается, когда SWavgThreshold. Для получения дополнительной информации см. silhouette.

MaxClustValue

Положительное целое число, указывающее максимальное количество возможных кластеров для протестированных разделов. По умолчанию это количество листьев в дереве.

Совет

При использовании 'maximum', 'median', или 'average' критерии, установка Threshold на [] (пустой) к силе cluster для возврата MaxClustValue кластеры. Это происходит потому, что такие метрики монотонно уменьшаются с увеличениями k.

Совет

При использовании 'ratio', 'gain', или 'silhouette' критерии, вам может быть трудно оценить соответствующий Threshold заранее. Задайте Threshold на [] (пустой), чтобы найти оптимальное количество кластеров ниже MaxClustValue. Кроме того, задайте MaxClustValue к небольшому значению, чтобы избежать дорогих расчетов из-за проверки всего возможного количества кластеров.

DistancesValue

Матрица парных расстояний, таких как возвращенная seqpdist функция, содержащая биологические расстояния между каждой парой последовательностей. cluster заменяет эту матрицу патристическими расстояниями в Tree. Для примера эта матрица может содержать действительные парные расстояния выборки.

Выходные аргументы

LeafClusters

Вектор-столбец, содержащий индекс кластера для каждого вида (листа) в Tree, объект филогенетического дерева.

NodeClusters

Вектор-столбец, содержащий индекс кластера для каждого конечного узла и узла ветви в Tree.

Совет

Используйте LeafClusters или NodeClusters выходные векторы с указателем, возвращаемым plot метод для изменения графических элементов объекта филогенетического дерева. Для получения дополнительной информации см. Примеры.

Branches

Двухколоночная матрица, содержащая для каждого шага в алгоритме индекс рассматриваемой ветви и значение критерия. Каждая строка соответствует шагу в алгоритме. Первый столбец содержит индексы ветвей, а второй - значения критериев.

Совет

Чтобы получить целую кривую критерия от количества кластеров в Branches, задать Threshold на [] (пустой) и не задавать MaxClustValue. Следует иметь в виду, что расчет некоторых критериев может быть интенсивным в вычислительном отношении.

Описание

LeafClusters = cluster(Tree, Threshold) возвращает вектор-столбец, содержащую индекс кластера для каждого вида (листа) в объекте филогенетического дерева. Он определяет оптимальное количество кластеров следующим образом:

  • Начиная с двух кластеров (k = 2), выбирает раздел, который оптимизирует критерий, заданный 'Criterion' свойство

  • Шаги по k 1 и снова выбирает оптимальное разбиение

  • Продолжает увеличивать k и выбирать оптимальный раздел, пока значение критерия не = Threshold или k = максимальное количество кластеров (то есть количество листьев)

  • Из всех возможных k значений выбирает k значение, разбиение которого оптимизирует критерий

[LeafClusters, NodeClusters] = cluster(Tree, Threshold) возвращает вектор-столбец, содержащий индекс кластера для каждого конечного узла и узла ветви в Tree.

[LeafClusters, NodeClusters, Branches] = cluster(Tree, Threshold) возвращает двухколоночную матрицу, содержащую для каждого шага в алгоритме индекс рассматриваемой ветви и значение критерия. Каждая строка соответствует шагу в алгоритме. Первый столбец содержит индексы ветвей, а второй - значения критериев.

кластер (..., 'PropertyName', PropertyValue, ...) вызывает cluster с необязательными свойствами, которые используют пары имя/значение свойства. Можно задать одно или несколько свойств в любом порядке. Заключайте каждую PropertyName в одинарных кавычках. Каждый PropertyName является нечувствительным к регистру. Эти имена свойства/пары значения свойств следующие:.

cluster(..., 'Criterion', CriterionValue, ...) задает критерий для определения количества кластеров как функции парных расстояний вида.

cluster(..., 'MaxClust', MaxClustValue, ...) задает максимальное количество возможных кластеров для протестированных разделов. По умолчанию это количество листьев в дереве.

cluster(..., 'Distances', DistancesValue, ...) подставляет святоотеческие расстояния в Tree с пользовательской парной матрицей расстояний.

Примеры

Проверьте кластеры в филогенетическом дереве:

% Read sequences from a multiple alignment file into a MATLAB
% structure
gagaa = multialignread('aagag.aln');

% Build a phylogenetic tree from the sequences
gag_tree = seqneighjoin(seqpdist(gagaa),'equivar',gagaa);

% Validate the clusters in the tree and find the best partition
% using the 'gain' criterion
[i,j] = cluster(gag_tree,[],'criterion','gain','maxclust',10);

% Use the returned vector of indices to color the branches of each
% cluster in a plot of the tree
h = plot(gag_tree);
set(h.BranchLines(j==2),'Color','b')
set(h.BranchLines(j==1),'Color','r')

Ссылки

[1] Дудойт, С. и Фридлян, Дж. (2002). Основанный на предсказании способ повторной дискретизации для оценки количества кластеров в наборе данных. Биология генома 3 (7), исследование 0036.1-0036.21.

[2] Theodoridis, S. and Koutroumbas, K. (1999). Распознавание шаблонов (Academic Press), стр. 434-435.

[3] Kaufman, L. and Rousseeu, P.J. (1990). Поиск групп в данных: введение в кластерный анализ (Нью-Йорк, Уайли).

[4] Calinski, R. and Harabasz, J. (1974). Метод дендрита для кластерного анализа. Commun Statistics 3, 1-27.

[5] Hartigan, J.A. (1985). Статистическая теория в кластеризации. J Классификация 2, 63-76.