1

我有一个简单的分析要做。我只需要计算列(或行,如果转置)的相关性。够简单吗?我无法获得整周的结果,我已经浏览了这里的大部分解决方案。

我的笔记本电脑有 4GB RAM。我确实可以访问具有 32 个节点的服务器。我的数据无法在此处加载,因为它很大(411k 列和 100 行)。如果您需要任何其他信息或数据的一部分,我可以尝试将其放在这里,但是无需真正查看数据即可轻松解释问题。我只需要得到一个大小为 411k X 411k 的相关矩阵,这意味着我需要计算数据行之间的相关性。

我尝试编写的概念:(所有这些都以某种方式给我带来了内存问题或永远运行)

  1. 最简单的方法,一行反对所有,使用 append.T 写出结果。(永远运行)
  2. biCorPar.r by bobthecat ( https://gist.github.com/bobthecat/5024079 ),将数据分成块并使用 ff 矩阵。(无法在我的服务器中使用 ff() 分配内存来分配 corMAT 矩阵)
  3. 将数据拆分为集合(每 10000 个连续行将是一个集合)并将每个集合与另一个集合进行相关(与 bigcorPar 相同的逻辑),但我无法找到一种方法将它们最终存储在一起以生成最终的 411kX411k 矩阵.
  4. 我现在正在尝试这个,bigcorPar.r 在 10000 行上针对 411k(所以 10000 被分成块)并将结果保存在单独的 csv 文件中。
  5. 我还尝试在我的服务器的一个节点中运行每 1000 对 411k,今天是我的第三天,我仍然在第 71 行。

我不是 R 专业人士,所以我只能尝试这么多。要么我的代码永远运行,要么我没有足够的内存来存储结果。有没有更有效的方法来解决这个问题?

感谢您的所有评论和帮助。

4

1 回答 1

1

在基因研究的背景下,我自己熟悉这个问题。

如果您只对显着相关性感兴趣,您可能会发现我的包 MatrixEQTL 很有用(可在 CRAN 上获得,更多信息请参见:http: //www.bios.unc.edu/research/genomic_software/Matrix_eQTL/)。

如果您想保留所有相关性,我想首先警告您,二进制格式(与文本相比更经济)将需要 411,000 x 411,000 x 8 字节 = 1.3 TB。如果这是您想要的,并且您可以接受所需的存储,我可以提供用于此类计算和存储的代码。

于 2014-06-06T05:51:40.407 回答