分组与聚类不匹配的问题,是没错,但不好解释的问题。
期待:tumor normal 各成一簇
实际上,不一定。
成一簇:说明画热图的基因在两个分组间有明显的表达模式
不成一簇:说明画热图的基因在两个分组间表达模式不是特别明显
换一组基因或者增删基因 可能改变聚类的结果。
分组和聚类是两件独立的事情,聚类是以样本为单位,而不是以分组为单位。每个样本属于那个分组的信息是已知的。
希望各成一簇,两个选择:
1.增删、换基因
2.取消聚类- cluster_cols = F
a.前提:矩阵列的顺序是先tumor后normal,或者先normal后tumor
i.不聚类时,热图列的顺序与矩阵列的顺序完全匹配。
b.取消聚类后,没有各成一簇,说明,表达矩阵列的顺序是乱的
load("TCGA-CHOL.Rdata")
load("TCGA-CHOL_DEG.Rdata")
cg1 = rownames(DEG1)[DEG1$change !="NOT"]
cg2 = rownames(DEG2)[DEG2$change !="NOT"]
cg3 = rownames(DEG3)[DEG3$change !="NOT"]
library(tinyarray)
cg = intersect_all(cg1,cg2,cg3)
gs = sample(cg,100)
dat = log2(cpm(exp)+1)
draw_heatmap(dat[gs,],Group)
# 取消聚类的效果
draw_heatmap(dat[gs,],Group,cluster_cols = F)
# 矩阵列的顺序是乱的,先排序,在画图。
# 如何调整表达矩阵列的顺序?根据Group
colData = data.frame(col = colnames(dat),
Group = Group)
colData = arrange(colData,Group)
n = dat[gs,colData$col]
draw_heatmap(n,colData$Group,cluster_cols = F)
3.耍流氓 分组聚类