我正在尝试做一些单细胞RNA测序分析。目前,我正在处理代表细胞X基因的矩阵。我正在尝试将这些矩阵中的三个合并在一起,其中两个是稀疏格式。之前,我已经在具有大约相同列数但行较少的矩阵中做到了这一点。
但是,当我尝试从合并矩阵中写入一个csv文件时,出现以下错误输出:
Error in write.table(test_dataset_m, file = "Splits_Arcuate.csv", sep = ",", :
corrupt matrix -- dims not not match length
我在Ubuntu 18.04.2 LTS服务器上运行此程序,使用Putty与Windows 10笔记本电脑进行SSH连接,并且我在服务器上运行Rstudio作为摇杆映像(rocker / tidyverse)。
我已经尝试消除未表达的基因(colsums = 0),但这并没有真正改变矩阵的整体大小。我也尝试过直接在write.table命令()中转换稀疏矩阵,但输出错误。
write.table(as.matrix(test_dataset), file = "Splits_Arcuate.csv", sep = ",", row.names = T, col.names = T)
Error in asMethod(object) :
Cholmod error 'problem too large' at file ../Core/cholmod_dense.c, line 105
现在,这是我的代码。在这里,我将行名放到一个列表中,然后用它在不同的数据集中查找共同的基因,并以此建立新的矩阵。然后,我尝试将数据集与cbind合并。 split2和split11是稀疏矩阵。
testgenes <- list(split2_genes, split11_genes, rownames(camp_counts))
test_universe <- Reduce(dplyr::intersect, testgenes, accumulate = F)
split2 <- splitseq_dge[test_universe,cells_split2]
split11 <- splitseq_dge[test_universe, cells_split11]
arcuate <- camp_counts[test_universe,]
split2 <- as.matrix(split2)
split11 <- as.matrix(split11)
test_dataset <- cbind(split2, split11, arcuate)
write.table(test_dataset, file = "Splits_Arcuate.csv", sep = ",", row.names = T, col.names = T)
事情是我需要 CSV输出,以作为其他软件的输入。
我不确定这是否是内存分配错误。我正在16核128GB RAM大学服务器上运行它。