時系列のクラスタリング、具体的にはクラスタリングに関するクエリをいくつか見ましたが、それらが私の質問に答えるとは思いません。
背景:酵母での時間経過実験で遺伝子をクラスター化したい。t1、 t2、 t3 、 t4の 4つの時点と、遺伝子の総数Gがあります。私はデータを行列Mの形式で持っています。ここで、列は処理(または時点) t1 t2 t3 および t4 を表し、行は遺伝子を表します。したがって、MはGx4行列です。
問題:すべての時点t1、 t2、 t3 、および t4 で、また特定の時点tiで同じように動作する遺伝子をクラスター化したい(iは{1、2、3、4}にある)(両方のクラスタリングを組み合わせた場合、ある時点でのクラスタリングは、複数の時点でのクラスタリングよりも重要です。これに加えて、ヒートマップも描きたいです。
私の解決策:
以下のRコードを使用して、ヒートマップとhclust
Rの関数を使用したクラスターを取得します(ユークリッド距離で階層的クラスタリングを実行します)。
row.scaled.expr <- (expr.diff - rowMeans(expr.diff)) / rowSds(expr.diff)
breaks.expr <- c(quantile(row.scaled.expr[row.scaled.expr < 0],
seq(0,1,length=10)[-9]), 0,
quantile(row.scaled.expr[row.scaled.expr > 0],
seq(0,1,length=10))[-1] )
blue.red.expr <- maPalette(low = "blue", high = "red", mid = "white",
k=length(breaks.expr) - 1)
pdf("images/clust.pdf",
height=30,width=20,pointsize=20)
ht1 <- heatmap.2(row.scaled.expr, col = blue.red.expr, Colv = FALSE, key = FALSE,
dendrogram = "row", scale = "none", trace = "none",
cex=1.5, cexRow=1, cexCol=2,
density.info = "none", breaks = breaks.expr,
labCol = colnames(row.scaled.expr),
labRow="",
lmat=rbind( c(0, 3), c(2,1), c(0,4) ), lhei=c(0.25, 4, 0.25 ),
main=expression("Heat Map"),
ylab="Genes in the Microarray",
xlab="Treatments"
)
dev.off()
私は最近、クラスターの数を推定するために使用できるBioconductorのhopach
パッケージを発見しました。以前は、ヒートマップのビンの数をランダムに割り当て、事前に指定された数のクラスターを取得するために適切な高さでツリーを切り取っていました。
私の解決策で起こりうる問題:
- 特定の治療内で遺伝子をクラスター化せず、治療全体でのみ遺伝子をクラスター化したり、その逆の場合もあります。
- 見たいパターンのヒートマップを取得するより良い方法があるかもしれません(治療内および治療全体で類似した遺伝子)。
- 私が知らないより良い視覚化方法があるかもしれません。
注意:
csgillespie(モデレーター)は、彼のWebサイトでより一般的なドキュメントを公開しています。このドキュメントでは、タイムコース分析のすべての側面(ヒートマップやクラスタリングを含む)について説明しています。ヒートマップとクラスタリングについて詳しく説明している記事を教えていただければ幸いです。
私は
pvclust
パッケージを試しましたが、Mが特異であると不平を言い、それがクラッシュします。