質問
こんにちは、
標準のBioConductorコマンド(64ビットLinux上のR 2.8.1、72 GBのRAM)を使用して、一定量のAffymetrix CELファイルをロードしようとしました
abatch<-ReadAffy()
しかし、このメッセージは引き続き表示されます:
Error in read.affybatch(filenames = l$filenames, phenoData = l$phenoData, :
allocMatrix: too many elements specified
このallocMatrixエラーの一般的な意味は何ですか?最大サイズを増やす方法はありますか?
ありがとう
解決
問題は、すべてのコア関数が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を待つこともできますし、彼らがこれを実装することを願っています...
他のヒント
巨大なaffymetrixデータセットで作業しようとしている場合、 aroma.affymetrix 。
また、生体伝導体は(特に)急速に変化するプロジェクトであり、通常は継続的な「サポート」を得るためにRの最新バージョンにアップグレードするよう求められます。 (BioCメーリングリストのヘルプ)。 ThrawnはR 2.10でも同様の問題を抱えていると述べていますが、とにかくアップグレードすることを考えているかもしれません。
偶然このスレッドにぶつかりました。いいえ、aroma。*フレームワークはintとlongsのallocMatrix()制限によって制限されません。これは、通常のアドレス空間のみを使用してデータをアドレス指定しないため、ファイルシステムを介してサブセット化するためです。いつでも完全なデータセットを保持したり、メモリにロードしたりすることはありません。基本的に、ファイルシステムはRAMでもOSのアドレス空間でもなく、制限を設定します。
/ Henrik (aroma。*の著者)