问题标签 [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.
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 的结果:
r - 1.3e6x200 稀疏矩阵的 FBM 函数
我需要一个 1.3e6x200 的内存共享稀疏矩阵。我尝试过使用 bigmemory 包,但我的计算机内存不足。我在 bigstatsr 包中找到了函数 FBM。对于一个小例子,我的代码在这个函数上运行得很好,但我不能创建一个高于 150 000 行的矩阵。我能解决这个问题吗?感谢您的宝贵时间 这是我尝试使用 FBM 功能时出现的错误
foreach - 将嵌套 foreach 循环的结果存储在 FBM 类中
我正在 foreach 循环中使用 1.3e6x1.3e6 的大型共享内存矩阵。我使用 bigstatsr 包的 FBM 功能创建了该矩阵。我需要 FBM 类对象中的循环结果不会耗尽 RAM 内存。这就是我想要在没有 FBM 类对象的情况下做的事情。
这就是我尝试的方式
PS:有人可以添加标签“dofuture”吗?
r - 将 bigstatsr::FBM 转换为矩阵?
是否可以将bigstatsr::FBM
对象转换为常规 R 矩阵?
例如,假设我生成以下矩阵:
我想转换mat3
为常规的 R 矩阵对象。我尝试了以下但没有奏效
r - bigstatsr 的 FBM() 在使用并行 foreach 时无法正确计算矩阵,就像代码在简单的 for 循环中运行时一样
我需要估计一个转换矩阵。由于我有很多数据,我尝试使用并行运行它,foreach
并尝试FBM()
了bigstatsr
. 而且似乎该函数并不总是返回正确的结果。(有时确实如此。)可能是该功能无法正常工作的情况吗?
这是代码正常工作的示例:
这是并不总是返回正确结果的代码:
使用snow
库时也会发生同样的情况
我是否正确使用了该软件包,还是其中有错误FBM()
?
一个办法:
软件包提供的文件锁丢失flock
。
r - big_cprodMat 输出问题:矩阵太大
我试图在R中得到两个“大矩阵”的叉积。不幸的是,这里不能公开数据,但尺寸是177304*23和23*177304,所以结果应该有尺寸177304* 177304。
由于我的 RAM 为 8 GB,因此我一直使用 FBM 类将矩阵存储在磁盘存储空间中。但是当我使用函数 big_cprodMat 来查找叉积时,它似乎首先使用矩阵类对象作为输出来解决产品,而 R 却崩溃了。
我能做些什么来避免这种情况吗?
我是该网站的新手,非常感谢任何人可以提供的任何帮助。
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 循环并行更新它。
谢谢!
r - 捕获并行化的 R 输出类型:bigstatsr 的替代方案,它支持矩阵和不同变量类型的 tibble?
以前我用来bigstatsr
存储计算值(双精度)。
doParallel
这些值是使用包并行计算的。
现在,我正在尝试使用bigstatsr
来存储更复杂的对象。通常以列表的形式。
直到现在我才注意到bigstatsr
不支持list
对象甚至character
类型......
有什么替代品可以用来存储list
对象吗?
下面是一个可重现的例子。请注意,bigMatrice_sepalLength
可以捕获数值但bigMatrice_sepalLengthWidth
无法捕获数值列表并且bigMatrice_species
无法存储字符值。
在我的实际用例中,我需要并行化一些预测模型。
通常,输出是值列表(历史、预测)、模型列表、模型参数列表等。
以前我可以使用 bigstatsr,因为我只存储预测值。虽然这一次,我也想捕获其他信息。
谢谢!
结果
r - 如何使用 sqlite 数据库填充 bigstatsr::FBM 以供以后使用?
我是 bigstatsr 软件包的新手。我有一个 sqlite 数据库,我想将其转换为 40k 行(基因)60K 列(样本)的 FBM 矩阵以供以后使用。我找到了如何用随机值填充矩阵的示例,但我不确定用我的 sqlite 数据库中的值填充矩阵的最佳方法是什么。
目前我按顺序执行,这里有一些模拟代码:
我有两个问题:
- 有没有办法更有效地填充矩阵?不确定是否可以在这里使用 big_apply,也许是 foreach
- 我是否总是必须使用 big_write 以便稍后加载我的矩阵?如果是这样,为什么我不能只使用 bk 文件?
提前致谢
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
类对象以外的任何内容。
我感谢提供的任何帮助。