我正在使用Bioinformatics Toolbox中的CLUSTERGRAM对象(版本3.7)。 MATLAB版本R2011a。
我想获得clustergram的行和列的排列向量,就像我可以用dendrogram函数做的那样:
x = magic(10);
>> [~,~,permrows] = dendrogram(linkage(x,'average','euc'))
permrows =
9 10 6 7 8 1 2 4 5 3
>> [~,~,permcols] = dendrogram(linkage(x','average','euc'))
permcols =
6 7 8 9 2 1 3 4 5 10
我发现群集和树形图中的聚类不一样,很可能是由于最优的叶子排序计算(我不想禁用它)。
例如,对于来自:
的clustergramclustergram(x)
('average'
和'eucledian'
是clustergram的默认方法)
载体(如附图所示)应为:
permrows = [1 2 4 5 3 10 9 6 7 8];
permcols = [1 2 8 9 6 7 10 5 4 3];
那么,如何以编程方式获取这些向量?有人熟悉这个对象吗?
有人可以建议一个好的选择吗?我知道我可以创建一个结合imagesc和树形图函数的相似图形,但是在树形图中叶子排序比在树形图中更好(最优)。
答案 0 :(得分:4)
通过查看文档,我猜get(gco,'ColumnLabels')
和get(gco,'RowLabels')
,其中gco
是clustergram对象,应该为您提供重新排序的标签。请注意,相应的set
- 方法会按原始顺序接收标签,并在内部重新排序。
因此,如果您使用了自定义标签(set(gco,'RowLabels',originalLabels)
)
[~,permrows] = ismember(get(gco,'RowLabels'),originalLabels)
应该返回行排列。