クラスタリングやヒートマップをやってほしい、と頼まれ、ドヤ顔でやっていたのだが、マイクロアレイみたいなカラースケールでできないか、と言われた。
(Rで)マイクロアレイデータ解析
だれでもできるマイクロアレイ解析
を参考にやってみる。
マイクロアレイのデータなぞもちろん持っていないので、適当に作ることにする。
library(genefilter) library(gplots) Nr <- 50 Nc <- 10 sample_data <- matrix(runif(Nr * Nc, min=0, max=30), nr=Nr, nc=Nc) heatmap.2(sample_data, col=redgreen(100), scale="none", key=TRUE, symkey=FALSE, density.inf="density", cexRow=1, margin=c(4, 8), main="Raw data")
実際のマイクロアレイ解析では、Zスコア化というスケーリング処理を行うらしい。
sample_data_Z <- genescale(sample_data, axis=1, method="Z") heatmap.2(sample_data_Z, col=redgreen(100), tracecol=NULL, scale="none", key=TRUE, symkey=FALSE, density.info="none", cexRow=1, margin=c(4, 8), main="Z score data")
以前、heatmapでクラスタリングを付け足すときに、標準以外の距離行列計算法、階層手法をどう選ぶのかわからなかったので、やり方を変えたパターンを残す。
heatmap.2(sample_data_Z, distfun=function(a){dist(a, method="maximum")}, hclustfun=function(b){hclust(b, method="centroid")}, col=redgreen(100), tracecol=NULL, scale="none", key=TRUE, symkey=FALSE, density.info="none", cexRow=1, margin=c(4, 8), main="Z score data, maximum, centroid", cex.main=0.3)