3

大家好,

我试图使用标准 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 错误的一般含义是什么?有没有办法增加它的最大尺寸?

谢谢

4

3 回答 3

5

问题是所有核心函数都使用 INT 而不是 LONG 来生成 R 对象。例如,您的错误消息来自 /src/main 中的 array.c

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

其中 nr 和 nc 是之前生成的整数,代表矩阵的行数和列数:

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

因此,简而言之,源代码中的所有内容都应更改为 LONG,可能不仅在 array.c 中,而且在大多数核心函数中,都需要进行一些重写。很抱歉没有提供更多帮助,但我想这是唯一的解决方案。或者,您可以等待明年的 R 3.x,并希望他们能实现这一点……

于 2009-12-01T12:29:44.217 回答
1

如果您正在尝试处理庞大的 affymetrix 数据集,那么使用来自aroma.affymetrix的包可能会更好。

此外,bioconductor 是一个(特别是)快速发展的项目,通常会要求您升级到最新版本的 R 以获得任何持续的“支持”(BioC 邮件列表上的帮助)。我看到 Thrawn 也提到 R 2.10 也有类似的问题,但你仍然可能会考虑升级。

于 2009-11-30T19:06:16.953 回答
1

我偶然碰到了这个线程。不,aroma.* 框架不受 ints 和 long 的 allocMatrix() 限制的限制,因为它不单独使用常规地址空间来寻址数据 - 相反,它也通过文件系统进行子集化。它永远不会保存并且永远不会在任何时候将完整的数据集加载到内存中。基本上,文件系统设置了限制,而不是 RAM 或操作系统的地址空间。

/Henrik(香气的作者。*)

于 2010-01-11T13:18:50.547 回答