2017-12-12 6 views
0

かなり大きなマトリックス(つまり、10000 x 100)を視覚化しようとしていました。どの列や行(次元が高いので問題になる可能性があります)で実行される追加のクラスタリングには興味がないと仮定すると、どちらが可能かはわかります。ヒートマップとヒートマップの実行時間の差2

gplotsパッケージのheatmap.2のエンハンスを開始しました。私は、クラスタリングや並べ替えを無視したいので、ドキュメント、およびスタックの提案(例えばheatmap.2 specify row order OR prevent reorder)によると、私はそれがだったかのようにしかし、それは、実行時間が非常に長かったことが判明し、適切なパラメータ

heatmap.2(some_data, Rowv = FALSE, Colv = FALSE, dendrogram = "none", trace="none") 

を設定しました実際には行の数に応じて二次のが発生します。下のプロットの依存関係を参照してください。私はstatsから基本heatmap機能を使用し、樹状

heatmap(same_data, Rowv = NA, Colv = NA) 

計算実行時間が線形と全く無視できるが抑制している一方

、。 ここに実行時間の比較があります。 enter image description here

私は上記のプロットのためのデータを生成するために使用されるコードは、最後に

num.rows <- c(100, 500, 1000, 1500, 2000, 2500, 3000) 

times.heatmap.2 <- sapply(num.rows, function(rown){ 
    m <- matrix(rnorm(rown*50), rown, 50) 
    system.time(tmp <- gplots::heatmap.2(m, Rowv = FALSE, Colv = FALSE, dendrogram = "none", trace="none")) 
})  

times.heatmap <- sapply(num.rows, function(rown){ 
    m <- matrix(rnorm(rown*50), rown, 50) 
    system.time(tmp <- heatmap(m, Rowv = NA, Colv = NA)) 
}) 

、質問です。

  • 誰もが、それはどの次の操作(例えば、クラスタリング)を無視すべきであるにも関わらず、heatmap.2は長い間実行時間とデータサイズにおそらく二次依存を持っている理由のアイデアを持っていますか?
  • 使用する必要があるパラメータはありますか、問題の診断には関数のソースコードを参照してください。

答えて

0

あなたはこの試みることができる:

install.packages("heatmap3") 

num.rows <- c(100, 500, 1000, 1500, 2000, 2500, 3000) 

times.heatmap.3 <- sapply(num.rows, function(rown){ 
    m <- matrix(rnorm(rown*50), rown, 50) 
    system.time(tmp <- heatmap3(m, Rowv = FALSE, Colv = FALSE, dendrogram = "none", trace="none")) 
}) 
+0

感謝を。しかし、質問はさらに進んでいます:*ヒートマップ2は、明らかにしてはいけないときに2次演算を実行するのはなぜですか?*答えは「ヒートマップ2は推奨されていません」ヒートマップ3を使用していますか? – storaged

関連する問題