質問

こんにちは、

標準の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。*の著者)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top