您好,
希望有人熟悉生物信息学工具箱中的聚类图。我对函数的图形方面感兴趣(树形图/热图),但由于它需要我使用Matlab的cluster()函数,因此目前是残障的。我更愿意使用我的个人算法进行聚类,然后让Matlab为我想象这个。
我已经搜索了代码,但是对于面向对象的编程一般都很愚蠢,特别是Matlab的版本。因此,我所知道的是函数调用行'obj = obj.getclusters',但不知道如何编辑它,以便我使用自己的聚类算法而不是Matlab的。
感谢任何帮助!
编辑:我专门研究一种新算法,因此我不需要pdist或链接。树形图在集群图函数之外计算。我用来创建树形图/热图的所有内容都是clustergram函数。我的生物信息学工具箱是版本3.3真的,我在这里找的就是他们到底做了什么'obj = obj.getclusters;'做?我不是程序员,对OO真的不熟悉。对我来说,看起来我们神奇地拥有集群,因为没有函数调用。这是在clustergram()
的第304行答案 0 :(得分:0)
首先我有更高版本的Bioinformatics Toolbox(3.4及更高版本),对于那些版本clustergram.m
文件没有行obj = obj.getclusters;
在课堂上记住CLUSTERGRAM(不像旧版本那样起作用)。运行clustergram(data,...)
时,实际运行此类的构造函数方法以创建clustergram对象。该对象是obj
变量。因此,当您运行obj = obj.getclusters;
时,实际上在clustergram类中运行getclusters
方法,这会更新对象obj
。
要获取getclusters
方法正在执行的更多详细信息,请在方法块中查找以下行:
function obj = getcluster(obj)
在最新版本中,方法computeClusters
定义为
function computeClusters(obj)
此方法计算行和列的树形图并更新对象。当然,你可以直接改变这个功能,但我不推荐它。为距离度量和链接开发单独的函数并使用这些函数构造clustergram对象要好得多。
如果您的算法不使用距离和链接,请解释如何构建树形图。它是否创建与LINKAGE函数输出相同的链接矩阵?如果没有这样的矩阵,我认为即使只是可视化,你也不能使用clustergram。你有一个例子你的clustergram应该是什么样的?您可以使用Heatmap类其他更简单的函数,例如IMAGE或IMAGESC。