首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Cholmod错误'out of memory‘:合并Seurat对象

Cholmod错误'out of memory‘:合并Seurat对象
EN

Stack Overflow用户
提问于 2021-02-07 00:17:34
回答 1查看 1.6K关注 0票数 1

我正在尝试合并包含转录计数数据(稀疏矩阵)的Seurat类对象。我对R比较陌生,所以任何帮助/解决方案我都很感激。我已经添加了我正在处理的数据的屏幕截图。

代码语言:javascript
运行
复制
**General Info:**
-------------

> memory.size(max = TRUE)
[1] 2533.94
R version 4.0.3 (2020-10-10)
Platform: i386-w64-mingw32/i386 (32-bit)
Running under: Windows 10 x64 (build 19041)

attached base packages:
[1] stats     graphics  grDevices utils    
[5] datasets  methods   base     

other attached packages:
[1] RSQLite_2.2.3 Seurat_3.2.3

我不确定是我的存储是问题所在,还是应该将函数一分为二。

代码语言:javascript
运行
复制
 options(stringsAsFactors = F)
setwd("C:/Users/Amara/OneDrive - Virginia Tech/XieLab/ZebraFish_Project/zf_brain-master/data")
folders <- list.files("C:/Users/Amara/OneDrive - Virginia Tech/XieLab/ZebraFish_Project/zf_brain-master/data")
library(Seurat)
library(dplyr)
zfbrainList = lapply(folders,function(folder){ 
  CreateSeuratObject(counts = Read10X(folder), 
                     project = folder )
})
zfbrain.combined <- merge(zfbrainList[[1]], 
                 y = c(zfbrainList[[2]],zfbrainList[[3]],zfbrainList[[4]],zfbrainList[[5]],
                       zfbrainList[[6]],zfbrainList[[7]],zfbrainList[[8]],zfbrainList[[9]],
                       zfbrainList[[10]],zfbrainList[[11]],zfbrainList[[12]],zfbrainList[[13]],
                       zfbrainList[[14]],zfbrainList[[15]]), 
                 add.cell.ids = folders, 
                 project = "zebrafish")

.cbind2Csp(x,y)中出错:文件中的Cholmod错误'out of memory‘../Core/cholmod_memory y.c,第147行

Data folder

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-07 02:08:29

用于处理原始问题中的数据的计算机具有运行32位版本R的64位Windows操作系统。memory.size()的结果显示,R使用的malloc()函数大约有2.4 4Gb的内存可用。32位版本的R在Windows上运行时,每个help for memory.size()最多只能访问略低于4 4Gb的内存。

Memory Limits in R告诉我们,在Windows上的32位R中,由于windows在2 Gb地址空间中间消耗了一些内存,因此通常不可能分配2 Gb大小的单个向量。

一旦我们加载了问题中的数据,zfbrainList对象就消耗了大约1.2 we的内存。

代码语言:javascript
运行
复制
options(stringsAsFactors = F)
folders <- list.files("./data/zebraFishData",full.names = TRUE)
library(Seurat)
library(dplyr)
zfbrainList = lapply(folders,function(folder){ 
     CreateSeuratObject(counts = Read10X(folder), 
                        project = folder )
})
format(object.size(zfbrainList),units = "Gb")

对结果执行...and命令:

代码语言:javascript
运行
复制
> format(object.size(zfbrainList),units = "Gb")
[1] "1.2 Gb"

此时,代码尝试将列表中的对象合并为单个对象。

代码语言:javascript
运行
复制
zfbrain.combined <- merge(zfbrainList[[1]], 
                          y = c(zfbrainList[[2]],zfbrainList[[3]],zfbrainList[[4]],zfbrainList[[5]],
                                zfbrainList[[6]],zfbrainList[[7]],zfbrainList[[8]],zfbrainList[[9]],
                                zfbrainList[[10]],zfbrainList[[11]],zfbrainList[[12]],zfbrainList[[13]],
                                zfbrainList[[14]],zfbrainList[[15]]), 
                          add.cell.ids = folders, 
                          project = "zebrafish")

当我们计算得到的zfbrain.combined对象的大小时,我们发现它的大小也大约是1.2‘s,这超过了原始poster机器上可供R使用的内存。

代码语言:javascript
运行
复制
format(object.size(zfbrain.combined),units = "Gb")

> format(object.size(zfbrain.combined),units = "Gb")
[1] "1.2 Gb"

由于在创建zfbrain.combinedzfbrainList必须在内存中,因此不可能在只有2.4 of内存可访问的R实例中执行上述编码的合并,因为zfbrainListzfbrain.combined消耗的内存都在2.4-2.5 of之间,不包括R运行所需的其他内存。

解决方案:使用64位版本的R

由于大多数基于Windows的机器至少有4 4Gb的内存,而memory.size()报告的内存量是2.4 4Gb,所以很可能机器上至少有4 4Gb的内存。最初的文章中使用的机器已经安装了64位Windows,因此我们可以通过安装和运行64位版本的R来使R能够访问更多的内存。

在具有8 8Gb内存的基于Windows的计算机上,32位R为memory.size()memory.limit()报告以下内容。

有趣的是,R报告memory.size()为25.25,因为每个help documentation的1Mb向下舍入为0.01,但memory.limit()提供了一个介于0和4095之间的数字(也符合文档)。在我们的测试机器上,它报告了3583,大约3.5 of的RAM。

当我们在同一台计算机上的64位R中运行这些函数时,memory.size()报告34.25,这意味着malloc()将分配3.3 8Gb的单个对象,而memory.limit()报告R可以访问总共8 8Gb的内存,这是安装在这台特定计算机上的总量。

测试解决方案

当我在64位Windows上的32位R 4.0.3会话中运行代码时,我能够复制内存不足错误。

当我在64位版本的R中运行代码时,它运行到结束,并且我能够计算得到的zfbrain.combined对象的大小。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66079047

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档