2010-10-20 1 views
0

EDIT: Я понял это. Просто не понял обозначения.Как использовать другие методы кластеризации для кластеров в наборе инструментов биоинформатики Matlab

Здравствуйте,

Надеюсь, кто-то там знакомый с clustergram в панели инструментов биоинформатики. Меня интересуют графические аспекты функции (диаграмма дендрограммы/тепла), но в настоящее время я испытываю недостаток, поскольку она требует от меня использования функции cluster() Matlab. Я бы предпочел использовать свой персональный алгоритм для кластера, а затем позволить Matlab визуализировать это для меня.

Я искал код, но я очень не знаю об объектно-ориентированном программировании в целом и в частности версии Matlab. Таким образом, все, что я знаю, это функция, вызывающая строку «obj = obj.getclusters», но понятия не имею, как отредактировать ее таким образом, что вместо использования Matlab я использую свой собственный алгоритм кластеризации.

Любая помощь приветствуется!

EDIT: Я специально работаю над новым алгоритмом, поэтому у меня нет необходимости в pdist или linkage. Дендрограммы вычисляются вне функции clustergram. Все, что я использую для создания dendrogram/heatmap, является функцией clustergram. My Bioinformatics toolbox - версия 3.3.

Действительно, все, что я ищу, это то, что, черт возьми, «obj = obj.getclusters;» делать? Я не программист и действительно не знаком с OO. Для меня это похоже на то, что у нас волшебные кластеры, так как нет вызова функции. Это в строке 304 clustergram()

+0

Какие данные вы хотите использовать для визуализации?Вы вычисляете дендрограммы вне кластерграммы? Параметры Pdist и Linkage недостаточны? Какова ваша версия MATLAB, Bioinformatics toolbox? – yuk

+0

Я согласен с @yuk, нам нужно больше деталей. Также это поможет, если вы разместите простой рабочий пример с функциями, которые вы используете в настоящее время для создания дендрограммы/тепловой карты ... – Amro

ответ

0

Сначала я более поздние версии Биоинформатика Toolbox (3.4 и более поздних версий), и для этих версий clustergram.m файл не имеет линии obj = obj.getclusters;

Запомнить CLUSTERGRAM в классе (не функция, поскольку это была более старая версия). Когда вы запускаете clustergram(data,...), вы фактически запускаете метод конструктора этого класса для создания объекта clustergram. Этот объект является переменной obj. Поэтому, когда вы запускаете obj = obj.getclusters;, вы фактически запускаете метод getclusters в классе clustergram, который обновляет объект obj.

Чтобы получить более подробную информацию, что getclusters метод делает вид на следующую строку в блочные методы:

function obj = getcluster(obj) 

В последних версиях есть метод computeClusters определяется как

function computeClusters(obj) 

Этом метод вычисляет как дендрограммы для строк и столбцов, так и обновляет объект. Конечно, вы можете напрямую изменить эту функцию, но я бы не рекомендовал ее. Гораздо лучше разработать отдельные функции для метрики расстояния и привязки и использовать эти функции для создания объекта clustergram.

Если ваш алгоритм не использует расстояние и связь, пожалуйста, объясните, как он должен строить дендрограммы. Создает ли он матрицу сцепления так же, как и выход функции LINKAGE? Без такой матрицы я не думаю, что вы можете использовать clustergram даже для визуализации. Есть ли у вас пример того, как должна выглядеть ваша кластерграмма? Возможно, вы можете использовать класс Heatmap других простых функций, таких как IMAGE или IMAGESC.