热图中分组与聚类不匹配的问题

2024-07-11 10:56:37 浏览数 (2)

分组与聚类不匹配的问题,是没错,但不好解释的问题。

期待: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.耍流氓 分组聚类

0 人点赞