Ошибка в write.table - поврежденная матрица - dims не соответствуют длине - PullRequest
1 голос
/ 08 апреля 2019

Я пытаюсь провести анализ последовательности РНК с одной клеткой.Сейчас я имею дело с матрицами, которые представляют клетки 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 для SSH-соединения с моим ноутбуком Windows 10, и я запускаю Rstudio на сервере в качестве образного переключателя (рокер/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-ядерном университетском сервере 128 ГБ ОЗУ.

...