全部,

我试图加载一定数量的Affymetrix CEL文件,使用标准BioConductor命令(64位Linux上的R 2.8.1,72 GB RAM)

abatch<-ReadAffy()

但我一直收到这条消息:

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

这个allocMatrix错误的一般含义是什么?有没有办法增加它的最大尺寸?

谢谢

有帮助吗?

解决方案

问题是所有核心函数都使用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,并希望他们能够实施这个......

其他提示

如果您正在尝试使用大型affymetrix数据集,那么使用 aroma.affymetrix

此外,bioconductor是一个(特别)快速移动的项目,通常会要求您升级到最新版本的R,以便继续<!>支持<!> (有关BioC邮件列表的帮助)。我看到索龙也提到了与R 2.10有类似问题,但你仍然可能会考虑升级。

我偶然碰到了这个帖子。不,香港。*框架不受int和long的allocMatrix()限制的限制,因为它不仅仅使用常规地址空间来处理数据 - 而是通过文件系统进行子集化。它永远不会保留,也永远不会将完整的数据集加载到内存中。基本上,文件系统设置限制,而不是RAM或操作系统的地址空间。

/亨里克 (香气的作者。*)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top