Как использовать другие методы кластеризации для кластерграммы в наборе инструментов биоинформатики Matlab - PullRequest
0 голосов
/ 20 октября 2010

РЕДАКТИРОВАТЬ: Я понял это. Просто не поняла обозначения.

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

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

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

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

РЕДАКТИРОВАТЬ: Я специально работаю над новым алгоритмом, поэтому я не нуждаюсь в pdist или компоновке. Дендрограммы рассчитываются вне функции кластерограммы. Все, что я использую для создания дендрограммы / карты тепла, - это функция кластерограммы. Мой набор инструментов Биоинформатика - версия 3.3

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

1 Ответ

0 голосов
/ 22 октября 2010

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

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

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

    function obj = getcluster(obj)

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

    function computeClusters(obj)

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...