【问题标题】:How to get subclusters from the function aheatmap in R如何从 R 中的函数 aheatmap 获取子集群
【发布时间】:2016-12-25 23:00:30
【问题描述】:

我正在使用aheatmap in the NMF package 构建阵列和 RNA-seq 数据的热图。

我正在尝试以与this user was trying to use cutree to extract from hclust objects 相同的方式提取数据子集群

我似乎找不到 hclust 类型或由 cutree 解释的 aheatmap 对象的属性。任何建议将不胜感激。

我也在这里和 BioStar 上发布了这个,因为它不完全是 R 问题,也不完全是生物信息学问题。

我尝试过的一些事情:

library(NMF)
#create some data
d <- matrix(rnorm(120),12,10)
# cluster it
heatmp.obj = aheatmap(d) 
# define some clusters
mycl <- cutree(heatmp.obj$Rowv, k=2) #this produces an error
mycl <- cutree(heatmp.obj$Colv, k=2) #this produces an error

【问题讨论】:

    标签: r heatmap


    【解决方案1】:

    aheatmap 返回一个列表,其中两个元素是“树状图”类型。 'dendrogram' 可以使用as.hclust() 强制输入'hclust'。例如,

    a = cutree(as.hclust(heatmp.obj$Rowv), k=3)

    【讨论】:

      【解决方案2】:

      根据您提供的第二个链接中的示例:

      d <- matrix(rnorm(120),12,10)
      hr <- hclust(dist(d, method="euclidean"), method="complete")
      mycl <- cutree(hr, k=2)
      heatmp.obj <- aheatmap(d,Rowv=as.dendrogram(hr))
      

      这会让你更接近你想要的答案吗?

      编辑 带有aheatmap 的图片:

      hclust 的图片:

      【讨论】:

      • 谢谢@desc!我宁愿以一种依赖 aheatmap 的默认聚类算法的方式来完成它,而不是使用 hclust 指定然后在 aheatmap 中使用它。那有意义吗?换句话说,运行heatmp.obj = aheatmap(d,Rowv=as.dendrogram(hr)) 不会产生与heatmp.obj = aheatmap(d) 相同的显示项
      • as.hclust()吗?
      • @Atticus29,我根据aheatmap 默认值更新了 hclust,生成的集群看起来是一样的,尽管进化枝可能会围绕分支旋转。
      • 再次感谢@desc!有没有办法强制执行相同的分支顺序?问是因为我有大量参数传递给 aheatmap 而我无法传递给 hclust,所以 hclust 唯一有用的方法是它可以准确地模仿 aheatmap 生成的树状图的聚类和顺序。
      • @Atticus29,我相信如果你想要和以前一样的显示,你可以使用heatmp.obj = aheatmap(d)hr &lt;- hclust(dist(d, method="euclidean"), method="complete") 的结果应该是相同的(使用相同的聚类/距离函数),但现在可以让您剪切 hr 而不是尝试剪切热图对象。
      猜你喜欢
      • 2014-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-05
      • 2019-04-04
      • 1970-01-01
      • 2022-07-11
      • 1970-01-01
      相关资源
      最近更新 更多