3

こんにちは、みんな、

標準のBioConductorコマンド(64ビットLinuxのR 2.8.1、72 GBのRAM)を使用して、一定量のAffymetrixCELファイルを読み込もうとしていました。

abatch<-ReadAffy()

しかし、私はこのメッセージを受け取り続けます:

Error in read.affybatch(filenames = l$filenames, phenoData = l$phenoData,  : 
  allocMatrix: too many elements specified

このallocMatrixエラーの一般的な意味は何ですか?最大サイズを大きくする方法はありますか?

ありがとうございました

4

3 に答える 3

5

問題は、すべてのコア関数が R オブジェクトの生成に LONG ではなく INT を使用していることです。たとえば、エラー メッセージは /src/main の array.c から来ています。

if ((double)nr * (double)nc > INT_MAX)
    error(_("too many elements specified"));

ここで、nr と nc は前に生成された整数で、行列の行と列の数を表します。

nr = asInteger(snr);
nc = asInteger(snc);

したがって、簡単に言うと、おそらく array.c だけでなく、ほとんどのコア関数で、ソース コードのすべてを LONG に変更する必要があり、それにはいくつかの書き直しが必要になります。役に立たなくて申し訳ありませんが、これが唯一の解決策だと思います。または、来年の R 3.x を待つこともできます。うまくいけば、これが実装されるでしょう...

于 2009-12-01T12:29:44.217 に答える
1

巨大な affymetrix データセットで作業しようとしている場合は、aroma.affymetrixのパッケージを使用するとうまくいく可能性があります。

また、バイオコンダクタは (特に) 動きの速いプロジェクトであり、継続的な「サポート」を受けるには、通常、R の最新バージョンにアップグレードするよう求められます (BioC メーリング リストのヘルプ)。Thrawn も R 2.10 で同様の問題を抱えていると述べているようですが、いずれにせよアップグレードを考えるかもしれません。

于 2009-11-30T19:06:16.953 に答える
1

たまたまこのスレにたどり着きました。いいえ、aroma.* フレームワークは int と long の allocMatrix() 制限によって制限されません。これは、通常のアドレス空間だけを使用してデータをアドレス指定しないためです。代わりに、ファイル システムを介してサブセット化します。完全なデータセットを保持したり、メモリにロードしたりすることは決してありません。基本的に、OSのRAMやアドレス空間ではなく、ファイルシステムが制限を設定します。

/Henrik (aroma.*の作者)

于 2010-01-11T13:18:50.547 に答える