1

簡単な分析を行う必要があります。列(または転置されている場合は行)の相関を計算するだけです。簡単ですか?私は一週間の結果を得ることができず、ここでほとんどの解決策を見てきました.

私のラップトップには4GBのRAMがあります。32 ノードのサーバーにアクセスできます。私のデータは巨大なのでここにロードできません (411k 列と 100 行)。他の情報やデータの一部が必要な場合は、ここに掲載してみますが、問題は実際にデータを見なくても簡単に説明できます。サイズ 411k X 411k の相関行列を取得する必要があるだけです。つまり、データの行間の相関を計算する必要があります。

私がコーディングしようとした概念: (それらはすべて何らかの形でメモリの問題を引き起こしたり、永遠に実行されたりします)

  1. 最も単純な方法は、すべてに対して 1 つの行で、append.T を使用して結果を書き出すことです。(永久に実行されます)
  2. bobthecat による biCorPar.r ( https://gist.github.com/bobthecat/5024079 )、データをブロックに分割し、ff 行列を使用します。(サーバーで ff() を使用して corMAT 行列を割り当てるためのメモリを割り当てることができません)
  3. データをセットに分割し (連続する 10000 行ごとにセットになります)、各セットを相互に関連付けます (bigcorPar と同じロジック)。 .
  4. 私は今これを試みています.411kに対して10000行のbigcorPar.r(したがって、10000はブロックに分割されます)で、結果を個別のcsvファイルに保存します。
  5. また、サーバーの 1 つのノードで 1000 対 411k ごとに実行しようとしていますが、今日は 3 日目で、まだ 71 行目です。

私は R のプロではないので、これだけしか試すことができませんでした。コードが永久に実行されるか、結果を保存するのに十分なメモリがありません。この問題に取り組むためのより効率的な方法はありますか?

すべてのコメントとヘルプに感謝します。

4

1 に答える 1

1

私自身、遺伝子研究の文脈でこの問題に精通しています。

重要な相関関係のみに関心がある場合は、私のパッケージ MatrixEQTL が役立つ場合があります (CRAN で入手できます。詳細はこちら: http://www.bios.unc.edu/research/genomic_software/Matrix_eQTL/ )。

すべての相関関係を維持したい場合は、バイナリ形式 (テキストに比べて経済的) で 411,000 x 411,000 x 8 バイト = 1.3 TB かかることを最初に警告したいと思います。これがあなたの望むものであり、それに必要なストレージに問題がなければ、そのような計算とストレージのための私のコードを提供できます。

于 2014-06-06T05:51:40.407 に答える