tak0kadaの何でもノート

発声練習、生存確認用。

医学関連は 医学ノート

DNAマイクロアレイのプロット

DNAマイクロアレイのプロットの課題をやってみた。gplotsライブラリのheatmap.2関数を使う場合と点をたくさん描くゴリ押しバージョンの2つを試した。

#--------------------
# 発現強度(0から1の範囲)
#--------------------
library("dplyr")
sig.intensity <- rnorm(n=5000, mean=10, sd=1) %>% matrix(nr=100, nc=50)
sig.intensity <- (sig.intensity - min(sig.intensity))
sig.intensity <- sig.intensity / max(sig.intensity)

# 発現強度matrixにラベルをつける
rname <- c()
for (i in 1:100) { rname <- c(rname, paste("gene", as.character(i))) }
cname <- c()
for (i in 1:50) { cname <- c(cname, paste("sample", as.character(i))) }
dimnames(sig.intensity) <- list(rname, cname)

#---------------
# 緑、赤の混合比
#---------------
# ランダムな場合
sig.color <- runif(n=5000, min=0, max=1) %>% matrix(nr=100, nc=50)
# 遺伝子で相関がある場合
n.cluster <- runif(n=1, min=30, max=70)
cluster <- sample(1:n.cluster, prob=rep(1/n.cluster, n.cluster), replace=T)
cluster.color <- runif(n=n.cluster, min=0, max=1)
sig.color <- cluster.color[cluster] %>% jitter %>% matrix(nr=100, nc=50)

#---------------
# プロット
#---------------
# heatmap(発現強度は無視)
library("gplots")
heatmap.2(sig.color, col=redgreen(256), trace="none") # greenred(100)?

# プロット(ゴリ押し)
y <- c(); for (i in 100:1) { y <- c(y, rep(i, 50)) }

plot(x = rep(1:50, 100),
     y = y,
     pch = 16,
     col = rgb(sig.color*sig.intensity, 1-sig.color*sig.intensity, 0), 
     cex=1) #あまりうまくいっていない

f:id:kuyata:20141110172329p:plain

f:id:kuyata:20141110172335p:plain