我有一个简单的分析要做。我只需要计算列(或行,如果转置)的相关性。够简单吗?我整整一周都无法获得结果,我已经浏览了这里的大部分解决方案。
我的笔记本电脑有 4GB 内存。我确实可以访问具有 32 个节点的服务器。我的数据无法在此处加载,因为它很大(411k 列和 100 行)。如果您需要任何其他信息或可能是部分数据,我可以尝试将其放在这里,但问题可以很容易地解释,而无需真正查看数据。我只需要获得大小为 411k X 411k 的相关矩阵,这意味着我需要计算数据行之间的相关性。
我尝试编码的概念:(所有这些概念都以某种方式给我带来内存问题或永远运行)
- 最简单的方法,一行对所有,使用append.T写出结果。 (永远运行)
- biCorPar.r 由 bobthecat (https://gist.github.com/bobthecat/5024079),将数据分成块并使用 ff 矩阵。 (无法在我的服务器中使用 ff() 分配内存来分配 corMAT 矩阵)
- 将数据分成集合(每 10000 个连续行将是一个集合),并将每个集合与另一个集合进行关联(与 bigcorPar 相同的逻辑),但我无法找到一种方法将它们最终存储在一起以生成最终的 411kX411k 矩阵。
- 我现在正在尝试此操作,bigcorPar.r 针对 411k 的 10000 行(因此 10000 行被分为块)并将结果保存在单独的 csv 文件中。
- 我还尝试在我的服务器的一个节点中运行每 1000 与 411k,今天是我的第三天,我仍然在第 71 行。
我不是 R 专业人士,所以我只能尝试这么多。要么我的代码永远运行,要么我没有足够的内存来存储结果。有没有更有效的方法来解决这个问题?
感谢您的所有评论和帮助。
我自己在基因研究的背景下熟悉这个问题。
如果您只对显着相关性感兴趣,您可能会发现我的包 MatrixEQTL 很有用(可在 CRAN 上找到,更多信息请参见此处:http://www.bios.unc.edu/research/genomic_software/Matrix_eQTL/ ).
如果您想保留所有相关性,我想首先警告您,以二进制格式(与文本相比更经济)将需要 411,000 x 411,000 x 8 字节 = 1.3 TB。如果这就是您想要的,并且您对所需的存储感到满意,我可以提供用于此类计算和存储的代码。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)