2

我有跨 20 列的 90 个观察值(行)的数据集。我已经生成了一个非常简洁的热图,它使用包 pheatmap 将我的数据分为两组。虽然它并不完全干净,但根据我的条件,这两个树状图簇几乎将我的样本分为 2 个不同的组。现在我想将这组 90 减少到更严格的 20-30 观察组左右,但仍希望保留与中所示相同的聚类顺序pheatmap。有没有办法做到这一点?或任何其他将我的观察结果减少到最小集的软件包,该集仍可以通过聚类顺序保留,如现在所见?的代码pheatmap

pheatmap(mydata[rownames(df.90),],scale="row",clustering_distance_cols = "correlation",show_rownames= T,show_colnames=T,color=col,annotation=batch.annotation,cluster_col=T,fontsize_row = 8,fontsize_col = 8,clustering_method = "ward.D2",border_color = NA,)

R 中我遗漏的任何包都可以处理此类甚至某些内容,pheatmap我可以将其用作减少变量的函数并进行一种置换测试以找到仍然可以保留我的聚类的最小观察集

数据是患者的行中的基因和列中的表达。

4

1 回答 1

3

我想回答我自己的问题并希望得到反馈。我kmeans_k=30在 pheatmap 中使用了 29 个聚类,这些聚类仍然能够保留我之前进行的 90 个观察的聚类。从那里我获得了它们各自簇中的基因。我从观察结果两侧的热图中选择了前 5 个集群,它们仍然可以产生我所需的热图,因为它们是具有高 SD 的集群。因为在我的 pheatmap 中,我有 scale="row" 并同时保持 row dendrogram 和 col dendrogram,所以我现在也不想改变它们。因此,当我现在绘制这 31 个基因(观察值)时,实际上它们进一步改善了我的行聚类,并以我想要的更清晰的方式将它们完全划分为 2 组。kemans 和新热图的代码

与 kmeans 30

obj<-pheatmap(df.90,scale="row",clustering_distance_cols = "correlation",show_rownames= T,show_colnames=T,color=col,annotation=batch.annotation,cluster_col=T,fontsize_row = 6,fontsize_col = 7,clustering_method = "ward.D2",border_color = NA,cellwidth = NA,cellheight = NA,kmeans_k = 30)

检索集群并提取观察/基因

obj$kmeans$cluster

获取顶部集群并使用热图绘制它们

pheatmap(mydata[rownames(df.31),],scale="row",clustering_distance_cols = "correlation",show_rownames= T,show_colnames=T,color=col,annotation=batch.annotation,cluster_col=T,fontsize_row = 8,fontsize_col = 8,clustering_method = "ward.D2",border_color = NA,)

大家觉得这种做法怎么样?它不像我想要的那样,但我认为它也没有错。如果有人可以提供更好的方法或方法,或者他们认为这也不正确,我想得到反馈。谢谢

于 2017-05-05T14:29:22.397 回答