问题标签 [bigstatsr]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
201 浏览

r - 如何在 Rcpp 中对 bigstatsr::FBM 的行或列进行子集化并将它们存储在向量中?

我有一个从给定矩阵的行(或列)计算基本汇总统计信息的函数,我现在正在尝试将此函数与 bigstatsr::FBM 一起使用(我知道使用列应该更有效)。我想将行/列存储在向量中的原因是我想用 std::nth_element 计算分位数。如果没有向量有不同的方法可以做到这一点,我会同样高兴。

这是我用于常规矩阵的代码。

然而,我很难用 FBM 做到这一点,因为我没有完全掌握 FBM - Pointer 工作原理的复杂性。

我尝试了以下但没有成功:

任何帮助将不胜感激,谢谢!

更新 - big_apply - 方法

我用两个不同大小的矩阵 X1 和 X2 实施了两次该方法。X1 的代码:

当使用 X1 和 block.size = 500 时,使用 4 个内核而不是 1 个内核会使我的 PC 上的任务慢 5-10 倍(不幸的是,4 个 CPU 和使用 Windows)。使用更大的矩阵 X2 并将 block.size 保留为默认值,使用 4 个内核而不是非并行版本需要 10 倍的时间。

X2 的结果:

0 投票
0 回答
91 浏览

r - 1.3e6x200 稀疏矩阵的 FBM 函数

我需要一个 1.3e6x200 的内存共享稀疏矩阵。我尝试过使用 bigmemory 包,但我的计算机内存不足。我在 bigstatsr 包中找到了函数 FBM。对于一个小例子,我的代码在这个函数上运行得很好,但我不能创建一个高于 150 000 行的矩阵。我能解决这个问题吗?感谢您的宝贵时间 这是我尝试使用 FBM 功能时出现的错误

0 投票
1 回答
66 浏览

foreach - 将嵌套 foreach 循环的结果存储在 FBM 类中

我正在 foreach 循环中使用 1.3e6x1.3e6 的大型共享内存矩阵。我使用 bigstatsr 包的 FBM 功能创建了该矩阵。我需要 FBM 类对象中的循环结果不会耗尽 RAM 内存。这就是我想要在没有 FBM 类对象的情况下做的事情。

这就是我尝试的方式

PS:有人可以添加标签“dofuture”吗?

0 投票
1 回答
261 浏览

r - 将 bigstatsr::FBM 转换为矩阵?

是否可以将bigstatsr::FBM对象转换为常规 R 矩阵?

例如,假设我生成以下矩阵:

我想转换mat3为常规的 R 矩阵对象。我尝试了以下但没有奏效

0 投票
1 回答
209 浏览

r - bigstatsr 的 FBM() 在使用并行 foreach 时无法正确计算矩阵,就像代码在简单的 for 循环中运行时一样

我需要估计一个转换矩阵。由于我有很多数据,我尝试使用并行运行它,foreach并尝试FBM()bigstatsr. 而且似乎该函数并不总是返回正确的结果。(有时确实如此。)可能是该功能无法正常工作的情况吗?

这是代码正常工作的示例:

这是并不总是返回正确结果的代码:

使用snow库时也会发生同样的情况

我是否正确使用了该软件包,还是其中有错误FBM()

一个办法:

软件包提供的文件锁丢失flock

0 投票
1 回答
45 浏览

r - big_cprodMat 输出问题:矩阵太大

我试图在R中得到两个“大矩阵”的叉积。不幸的是,这里不能公开数据,但尺寸是177304*23和23*177304,所以结果应该有尺寸177304* 177304。

由于我的 RAM 为 8 GB,因此我一直使用 FBM 类将矩阵存储在磁盘存储空间中。但是当我使用函数 big_cprodMat 来查找叉积时,它似乎首先使用矩阵类对象作为输出来解决产品,而 R 却崩溃了。

我能做些什么来避免这种情况吗?

我是该网站的新手,非常感谢任何人可以提供的任何帮助。

0 投票
0 回答
126 浏览

r - 如何在 bigstatsr 包中使用 FBM 创建高维数组?

bigstatsr 包中的 FBM 函数允许我们创建具有共享内存的 2D 矩阵。例如,FBM(5, 8) 将使用共享内存创建一个 5 x 8 矩阵。

但是,有没有办法以类似的方式创建具有共享内存的 3D 矩阵?

一个伪代码是 FBM(100, 5, 6),它会给我一个 3D 数组/矩阵,它由 100 个 5 x 6 2D 矩阵组成。但显然它不起作用,因为它给出了: match.arg(type) 中的错误:'arg' must be NULL or a character vector

我问这是因为如果我想并行使用 foreach 循环更新一个数组,我必须将其设为共享内存,否则 foreach 循环将制作数组的副本并更新这些副本,同时保留原始一不变。我正在寻找的是一种创建 3D 数组的方法,以便可以使用 foreach 循环并行更新它。

谢谢!

0 投票
0 回答
43 浏览

r - 捕获并行化的 R 输出类型:bigstatsr 的替代方案,它支持矩阵和不同变量类型的 tibble?

以前我用来bigstatsr存储计算值(双精度)。

doParallel这些值是使用包并行计算的。

现在,我正在尝试使用bigstatsr来存储更复杂的对象。通常以列表的形式。

直到现在我才注意到bigstatsr不支持list对象甚至character类型......

有什么替代品可以用来存储list对象吗?

下面是一个可重现的例子。请注意,bigMatrice_sepalLength可以捕获数值但bigMatrice_sepalLengthWidth无法捕获数值列表并且bigMatrice_species无法存储字符值。

在我的实际用例中,我需要并行化一些预测模型。

通常,输出是值列表(历史、预测)、模型列表、模型参数列表等。

以前我可以使用 bigstatsr,因为我只存储预测值。虽然这一次,我也想捕获其他信息。

谢谢!

结果

0 投票
1 回答
20 浏览

r - 如何使用 sqlite 数据库填充 bigstatsr::FBM 以供以后使用?

我是 bigstatsr 软件包的新手。我有一个 sqlite 数据库,我想将其转换为 40k 行(基因)60K 列(样本)的 FBM 矩阵以供以后使用。我找到了如何用随机值填充矩阵的示例,但我不确定用我的 sqlite 数据库中的值填充矩阵的最佳方法是什么。

目前我按顺序执行,这里有一些模拟代码:

我有两个问题:

  1. 有没有办法更有效地填充矩阵?不确定是否可以在这里使用 big_apply,也许是 foreach
  2. 我是否总是必须使用 big_write 以便稍后加载我的矩阵?如果是这样,为什么我不能只使用 bk 文件?

提前致谢

0 投票
0 回答
37 浏览

r - 如何在 R 中使用大内存数据执行 Hmisc::rcorr()?

我需要Hmisc::rcorr()用大内存data.table执行(各种前面的函数和子集都需要这种格式)。可以在给定的 RAM 中读取和加载 ( fread()) 对象,但rcorr()操作最终会失败:

> Error: cannot allocate vector of size 1.2 Gb

因此,我已经转移到各种包来处理大内存数据。我最初尝试过bigmemory,但无法开始:

然后我搬到disk.frame了没有成功:

我还尝试disk.frame在将 转换data.table为矩阵后创建一个,但它不接受data.frame类对象以外的任何内容。

我感谢提供的任何帮助。