GreenleafLab / ArchR

ArchR : Analysis of Regulatory Chromatin in R (www.ArchRProject.com)
MIT License
387 stars 138 forks source link

Error in addDoubletScores : memory not mapped #1846

Closed mycho830 closed 1 year ago

mycho830 commented 1 year ago

Hi all,

During adding doublet score, I get the "memory not mapped" error.

Do you have any suggestions on how I can resolve this issue?

code

doubScores <- addDoubletScores( input = ArrowFiles, k = 10, #Refers to how many cells near a "pseudo-doublet" to count. knnMethod = "UMAP", #Refers to the embedding to use for nearest neighbor search with doublet projection. LSIMethod = 1 )

Log

2023-02-16 04:01:47 : test (1 of 1) : Computing Doublet Statistics, 0.001 mins elapsed. morabito (1 of 1) : UMAP Projection R^2 = 0.99726

caught segfault address 0x20, cause 'memory not mapped'

Traceback: 1: Module(module, mustStart = TRUE, where = env) 2: doTryCatch(return(expr), name, parentenv, handler) 3: tryCatchOne(expr, names, parentenv, handlers[[1L]]) 4: tryCatchList(expr, classes, parentenv, handlers) 5: tryCatch(Module(module, mustStart = TRUE, where = env), error = function(e) e) 6: loadModule(module, NULL, env = where, loadNow = TRUE) 7: Rcpp::loadRcppClass(Class = "WKNNF", where = NS) 8: (function (NS) Rcpp::loadRcppClass(Class = "WKNNF", where = NS))() 9: doTryCatch(return(expr), name, parentenv, handler) 10: tryCatchOne(expr, names, parentenv, handlers[[1L]]) 11: tryCatchList(expr, classes, parentenv, handlers) 12: tryCatch((function (NS) Rcpp::loadRcppClass(Class = "WKNNF", where = NS))(), error = function(e) e) 13: eval(substitute(tryCatch(FUN(WHERE), error = function(e) e), list(FUN = f, WHERE = where)), where) 14: eval(substitute(tryCatch(FUN(WHERE), error = function(e) e), list(FUN = f, WHERE = where)), where) 15: .doLoadActions(where, attach) 16: methods::cacheMetaData(ns, TRUE, ns) 17: loadNamespace(package, lib.loc) 18: doTryCatch(return(expr), name, parentenv, handler) 19: tryCatchOne(expr, names, parentenv, handlers[[1L]]) 20: tryCatchList(expr, classes, parentenv, handlers) 21: tryCatch({ attr(package, "LibPath") <- which.lib.loc ns <- loadNamespace(package, lib.loc) env <- attachNamespace(ns, pos = pos, deps, exclude, include.only)}, error = function(e) { P <- if (!is.null(cc <- conditionCall(e))) paste(" in", deparse(cc)[1L]) else "" msg <- gettextf("package or namespace load failed for %s%s:\n %s", sQuote(package), P, conditionMessage(e)) if (logical.return) message(paste("Error:", msg), domain = NA) else stop(msg, call. = FALSE, domain = NA)}) 22: library(package, lib.loc = lib.loc, character.only = TRUE, logical.return = TRUE, warn.conflicts = warn.conflicts, quietly = quietly, mask.ok = mask.ok, exclude = exclude, include.only = include.only, attach.required = attach.required) 23: doTryCatch(return(expr), name, parentenv, handler) 24: tryCatchOne(expr, names, parentenv, handlers[[1L]]) 25: tryCatchList(expr, classes, parentenv, handlers) 26: tryCatch(library(package, lib.loc = lib.loc, character.only = TRUE, logical.return = TRUE, warn.conflicts = warn.conflicts, quietly = quietly, mask.ok = mask.ok, exclude = exclude, include.only = include.only, attach.required = attach.required), error = function(e) e) 27: require(x, character.only = TRUE) 28: withCallingHandlers(expr, packageStartupMessage = function(c) tryInvokeRestart("muffleMessage")) 29: suppressPackageStartupMessages(require(x, character.only = TRUE)) 30: .requirePackage("nabor", source = "cran") 31: .computeKNN(allLSI[-seq_len(nSimLSI), ], allLSI[seq_len(nSimLSI), ], k) 32: doTryCatch(return(expr), name, parentenv, handler) 33: tryCatchOne(expr, names, parentenv, handlers[[1L]]) 34: tryCatchList(expr, classes, parentenv, handlers) 35: tryCatch({ knnDoub <- .computeKNN(allLSI[-seq_len(nSimLSI), ], allLSI[seq_len(nSimLSI), ], k) countKnn <- rep(0, nrow(LSI$matSVD)) names(countKnn) <- rownames(LSI$matSVD) tabDoub <- table(as.vector(knnDoub)) countKnn[as.integer(names(tabDoub))] <- countKnn[as.integer(names(tabDoub))] + tabDoub .logThis(countKnn, paste0(prefix, "Number of Nearby Simulated Doublets"), logFile = logFile) nSim <- nrow(LSI$matSVD) scaleTo <- 10000 scaleBy <- scaleTo/nSim pvalBinomDoub <- lapply(seq_along(countKnn), function(x) { countKnnx <- round(countKnn[x] scaleBy) sumKnnx <- round(sum(countKnn) scaleBy) pbinom(countKnnx - 1, sumKnnx, 1/scaleTo, lower.tail = FALSE) }) %>% unlist padjBinomDoub <- p.adjust(pvalBinomDoub, method = "bonferroni") doubletScore <- -log10(pmax(padjBinomDoub, 4.94065645841247e-324)) doubletEnrich <- (countKnn/sum(countKnn))/(1/nrow(LSI$matSVD)) doubletEnrich <- 10000 doubletEnrich/length(countKnn) .logThis(doubletScore, paste0(prefix, "DoubletScoresLSI"), logFile = logFile) .logThis(doubletEnrich, paste0(prefix, "DoubletEnrichLSI"), logFile = logFile) out$doubletEnrichLSI <- doubletEnrich out$doubletScoreLSI <- doubletScore knnDoub <- .computeKNN(umapProject[-seq_len(nSimLSI), ], umapProject[seq_len(nSimLSI), ], k) countKnn <- rep(0, nrow(LSI$matSVD)) names(countKnn) <- rownames(LSI$matSVD) tabDoub <- table(as.vector(knnDoub)) countKnn[as.integer(names(tabDoub))] <- countKnn[as.integer(names(tabDoub))] + tabDoub nSim <- nrow(LSI$matSVD) scaleTo <- 10000 scaleBy <- scaleTo/nSim pvalBinomDoub <- lapply(seq_along(countKnn), function(x) { countKnnx <- round(countKnn[x] scaleBy) sumKnnx <- round(sum(countKnn) scaleBy) pbinom(countKnnx - 1, sumKnnx, 1/scaleTo, lower.tail = FALSE) }) %>% unlist padjBinomDoub <- p.adjust(pvalBinomDoub, method = "bonferroni") doubletScore <- -log10(pmax(padjBinomDoub, 4.94065645841247e-324)) doubletEnrich <- (countKnn/sum(countKnn))/(1/nrow(LSI$matSVD)) doubletEnrich <- 10000 doubletEnrich/length(countKnn) .logThis(doubletScore, paste0(prefix, "DoubletScoresUMAP"), logFile = logFile) .logThis(doubletEnrich, paste0(prefix, "DoubletEnrichUMAP"), logFile = logFile) out$doubletEnrichUMAP <- doubletEnrich out$doubletScoreUMAP <- doubletScore out}, error = function(e) { errorList <- list(prefix = prefix, knnDoub = if (exists("knnDoub", inherits = FALSE)) knnDoub else "knnDoublets", pvalBinomDoub = if (exists("pvalBinomDoub", inherits = FALSE)) pvalBinomDoub else "Error with Pval!", padjBinomDoub = if (exists("padjBinomDoub", inherits = FALSE)) padjBinomDoub else "Error with Padj!", out = if (exists("out", inherits = FALSE)) out else "Error with outlist of results!") .logError(e, fn = "Simulate LSI Project Doublets", info = prefix, errorList = errorList, logFile = logFile)}) 36: .simulateProjectDoublets(mat = mat, LSI = LSI, sampleRatio1 = c(1/2), sampleRatio2 = c(1/2), nTrials = nTrials max(floor(nCells(proj)/nSample), 1), nSample = nSample, k = k, uwotUmap = uwotUmap, seed = 1, force = force, threads = subThreads, logFile = logFile, prefix = prefix) 37: doTryCatch(return(expr), name, parentenv, handler) 38: tryCatchOne(expr, names, parentenv, handlers[[1L]]) 39: tryCatchList(expr, classes, parentenv, handlers) 40: tryCatch({ .simulateProjectDoublets(mat = mat, LSI = LSI, sampleRatio1 = c(1/2), sampleRatio2 = c(1/2), nTrials = nTrials max(floor(nCells(proj)/nSample), 1), nSample = nSample, k = k, uwotUmap = uwotUmap, seed = 1, force = force, threads = subThreads, logFile = logFile, prefix = prefix)}, error = function(e) { errorList <- list(mat = mat, LSI = LSI, sampleRatio1 = c(1/2), sampleRatio2 = c(1/2), nTrials = nTrials max(floor(nCells(proj)/nSample), 1), nSample = nSample, k = k, uwotUmap = uwotUmap, seed = 1, force = force, threads = subThreads, logFile = logFile, prefix = prefix) .logError(e, fn = ".simulateProjectDoublets", info = prefix, errorList = errorList, logFile = logFile)}) 41: FUN(X[[i]], ...) 42: lapply(...) 43: (function (..., threads = 1, preschedule = FALSE) { if (tolower(.Platform$OS.type) == "windows") { threads <- 1 } if (threads > 1) { .requirePackage("parallel", source = "cran") o <- mclapply(..., mc.cores = threads, mc.preschedule = preschedule) errorMsg <- list() for (i in seq_along(o)) { if (inherits(o[[i]], "try-error")) { capOut <- utils::capture.output(o[[i]]) capOut <- capOut[!grepl("attr\(\,|try-error", capOut)] capOut <- head(capOut, 10) capOut <- unlist(lapply(capOut, function(x) substr(x, 1, 250))) capOut <- paste0("\t", capOut) errorMsg[[length(errorMsg) + 1]] <- paste0(c(paste0("Error Found Iteration ", i, " : "), capOut), "\n") } } if (length(errorMsg) != 0) { errorMsg <- unlist(errorMsg) errorMsg <- head(errorMsg, 50) errorMsg[1] <- paste0("\n", errorMsg[1]) stop(errorMsg) } } else { o <- lapply(...) } o})(useMatrix = "TileMatrix", k = 10, nTrials = 5, dimsToUse = 1:30, LSIMethod = 1, scaleDims = FALSE, corCutOff = 0.75, knnMethod = "UMAP", UMAPParams = list(n_neighbors = 40, min_dist = 0.4, metric = "euclidean", verbose = FALSE), LSIParams = list(outlierQuantiles = NULL, filterBias = FALSE), outDir = "QualityControl", threads = 1, force = FALSE, verbose = TRUE, logFile = "ArchRLogs/ArchR-addDoubletScores-3a64f3d939b55-Date-2023-02-16_Time-04-01-47.log", ArrowFiles = "test.arrow", X = 1L, FUN = function (i = NULL, ArrowFiles = NULL, useMatrix = "TileMatrix", allCells = NULL, UMAPParams = list(), LSIParams = list(), nTrials = 5, dimsToUse = 1:30, corCutOff = 0.75, LSIMethod = 1, sampleCells = NULL, scaleDims = FALSE, k = 10, nSample = 1000, knnMethod = "UMAP", outDir = "QualityControl", force = FALSE, subThreads = 1, verbose = TRUE, tstart = NULL, logFile = NULL) { if (is.null(tstart)) { tstart <- Sys.time() } ArrowFile <- ArrowFiles[i] sampleName <- .sampleName(ArrowFile) outDir <- file.path(outDir, sampleName) dir.create(outDir, showWarnings = FALSE) prefix <- sprintf("%s (%s of %s) : ", sampleName, i, length(ArrowFiles)) .logDiffTime(sprintf("%s Computing Doublet Statistics", prefix), tstart, addHeader = FALSE, verbose = verbose, logFile = logFile) tmpDir <- .tempfile() dir.create(tmpDir) proj <- suppressMessages(ArchRProject(ArrowFiles = ArrowFile, outputDirectory = tmpDir, copyArrows = FALSE, showLogo = FALSE, geneAnnotation = .nullGeneAnnotation(), genomeAnnotation = .nullGenomeAnnotation())) if (is.null(allCells)) { proj@cellColData <- proj@cellColData[.availableCells(ArrowFile, useMatrix), ] } else { proj@cellColData <- proj@cellColData[which(rownames(proj@cellColData) %in% allCells), ] } .logDiffTime("Running IterativeLSI", tstart, addHeader = FALSE, verbose = FALSE, logFile = logFile) LSIParams$ArchRProj <- proj LSIParams$saveIterations <- FALSE LSIParams$useMatrix <- useMatrix LSIParams$LSIMethod <- LSIMethod LSIParams$dimsToUse <- dimsToUse LSIParams$scaleDims <- scaleDims LSIParams$corCutOff <- corCutOff LSIParams$threads <- subThreads LSIParams$verbose <- FALSE LSIParams$force <- TRUE LSIParams$logFile <- logFile proj <- tryCatch({ do.call(addIterativeLSI, LSIParams) }, error = function(e) { .logError(e, fn = "addIterativeLSI", info = prefix, errorList = list(ArrowFile = ArrowFile), logFile = logFile) }) .logDiffTime("Constructing Partial Matrix for Projection", tstart, addHeader = FALSE, verbose = FALSE, logFile = logFile) LSI <- getReducedDims(ArchRProj = proj, reducedDims = "IterativeLSI", corCutOff = corCutOff, dimsToUse = dimsToUse, scaleDims = scaleDims, returnMatrix = FALSE) .logThis(LSI, name = paste0(prefix, "LSI Result"), logFile = logFile) LSIDims <- seq_len(ncol(LSI[[1]])) if (length(LSIDims) < 2) { .logMessage("Reduced LSI Dims below 2 dimensions, please increase dimsToUse or increase corCutOff!") stop("Reduced LSI Dims below 2 dimensions, please increase dimsToUse or increase corCutOff!") } featureDF <- LSI$LSIFeatures mat <- tryCatch({ .getPartialMatrix(ArrowFiles = getArrowFiles(proj), featureDF = featureDF, threads = subThreads, cellNames = rownames(getCellColData(proj)), doSampleCells = FALSE, verbose = FALSE) }, error = function(e) { errorList <- list(ArrowFiles = getArrowFiles(proj), featureDF = featureDF, threads = subThreads, cellNames = rownames(getCellColData(proj)), doSampleCells = FALSE, verbose = FALSE) .logError(e, fn = "getPartialMatrix", info = prefix, errorList = errorList, logFile = logFile) }) cellNames <- rownames(getCellColData(proj)) .logDiffTime("Running LSI UMAP", tstart, addHeader = FALSE, verbose = FALSE, logFile = logFile) set.seed(1) UMAPParams <- .mergeParams(UMAPParams, list(n_neighbors = 40, min_dist = 0.4, metric = "euclidean", verbose = FALSE)) UMAPParams$X <- LSI$matSVD UMAPParams$ret_nn <- TRUE UMAPParams$ret_model <- TRUE UMAPParams$n_threads <- subThreads .logThis(UMAPParams, name = paste0(prefix, "UMAP Params"), logFile = logFile) uwotUmap <- tryCatch({ do.call(uwot::umap, UMAPParams) }, error = function(e) { errorList <- UMAPParams .logError(e, fn = "uwot::umap", info = prefix, errorList = errorList, logFile = logFile) }) .logDiffTime("Simulating and Projecting Doublets", tstart, addHeader = FALSE, verbose = FALSE, logFile = logFile) simDoubletsSave <- tryCatch({ .simulateProjectDoublets(mat = mat, LSI = LSI, sampleRatio1 = c(1/2), sampleRatio2 = c(1/2), nTrials = nTrials max(floor(nCells(proj)/nSample), 1), nSample = nSample, k = k, uwotUmap = uwotUmap, seed = 1, force = force, threads = subThreads, logFile = logFile, prefix = prefix) }, error = function(e) { errorList <- list(mat = mat, LSI = LSI, sampleRatio1 = c(1/2), sampleRatio2 = c(1/2), nTrials = nTrials * max(floor(nCells(proj)/nSample), 1), nSample = nSample, k = k, uwotUmap = uwotUmap, seed = 1, force = force, threads = subThreads, logFile = logFile, prefix = prefix) .logError(e, fn = ".simulateProjectDoublets", info = prefix, errorList = errorList, logFile = logFile) }) if (tolower(knnMethod) == "lsi") { simDoublets <- SimpleList(doubletUMAP = simDoubletsSave$doubletUMAP, doubletScore = simDoubletsSave$doubletScoreLSI, doubletEnrich = simDoubletsSave$doubletEnrichLSI) } else { simDoublets <- SimpleList(doubletUMAP = simDoubletsSave$doubletUMAP, doubletScore = simDoubletsSave$doubletScoreUMAP, doubletEnrich = simDoubletsSave$doubletEnrichUMAP) } .logThis(simDoublets, name = paste0(prefix, "SimulationResults"), logFile = logFile) pal <- c("grey", "#FB8861FF", "#B63679FF", "#51127CFF", "#000004FF") df <- data.frame(row.names = rownames(LSI$matSVD), uwotUmap[[1]], type = "experiment") df[, "score"] <- 0 df[, "enrichment"] <- 0 df[names(simDoublets$doubletScore), "score"] <- simDoublets$doubletScore df[names(simDoublets$doubletScore), "enrichment"] <- simDoublets$doubletEnrich doubUMAP <- simDoublets$doubletUMAP dfDoub <- data.frame(row.names = paste0("doublet_", seq_len(nrow(doubUMAP))), .getDensity(doubUMAP[, 1], doubUMAP[, 2]), type = "simulated_doublet") dfDoub <- dfDoub[order(dfDoub$density), , drop = FALSE] dfDoub$color <- dfDoub$density .logThis(df, name = paste0(prefix, "Sample UMAP"), logFile = logFile) .logThis(dfDoub, name = paste0(prefix, "Simulated Doublet UMAP"), logFile = logFile) summaryList <- SimpleList(originalDataUMAP = df, simulatedDoubletUMAP = dfDoub, doubletResults = simDoubletsSave) .safeSaveRDS(summaryList, file.path(outDir, paste0(.sampleName(ArrowFile), "-Doublet-Summary.rds"))) rm(simDoubletsSave) tmpFile <- .tempfile() o <- tryCatch({ pdf(file.path(outDir, paste0(.sampleName(ArrowFile), "-Doublet-Summary.pdf")), width = 6, height = 6) xlim <- range(df$X1) %>% extendrange(f = 0.05) ylim <- range(df$X2) %>% extendrange(f = 0.05) pdensity <- ggplot() + .geom_point_rast2(data = df, aes(x = X1, y = X2), color = "lightgrey", size = 0.5) + .geom_point_rast2(data = dfDoub, aes(x = x, y = y, colour = color), size = 0.5) + scale_colour_gradientn(colors = pal) + xlab("UMAP Dimension 1") + ylab("UMAP Dimension 2") + labs(color = "Simulated Doublet Density") + guides(fill = "none") + theme_ArchR(baseSize = 10) + theme(axis.text.x = element_blank(), axis.ticks.x = element_blank(), axis.text.y = element_blank(), axis.ticks.y = element_blank()) + coord_equal(ratio = diff(xlim)/diff(ylim), xlim = xlim, ylim = ylim, expand = FALSE) + ggtitle("Simulated and LSI-Projected Density Overlayed") + theme(legend.direction = "horizontal", legend.box.background = element_rect(color = NA)) pscore <- ggPoint(x = df[, 1], y = df[, 2], color = .quantileCut(df$score, 0, 0.95), xlim = xlim, ylim = ylim, discrete = FALSE, size = 0.5, xlab = "UMAP Dimension 1", ylab = "UMAP Dimension 2", pal = pal, title = "Doublet Scores -log10(P-adj.)", colorTitle = "Doublet Scores -log10(P-adj.)", rastr = TRUE, baseSize = 10) + theme(axis.text.x = element_blank(), axis.ticks.x = element_blank(), axis.text.y = element_blank(), axis.ticks.y = element_blank()) penrich <- ggPoint(x = df[, 1], y = df[, 2], color = .quantileCut(df$enrichment, 0, 0.95), xlim = xlim, ylim = ylim, discrete = FALSE, size = 0.5, xlab = "UMAP Dimension 1", ylab = "UMAP Dimension 2", pal = pal, title = "Simulated Doublet Enrichment over Expectation", colorTitle = "Doublet Enrichment", rastr = TRUE, baseSize = 10) + theme(axis.text.x = element_blank(), axis.ticks.x = element_blank(), axis.text.y = element_blank(), axis.ticks.y = element_blank()) .fixPlotSize(penrich, plotWidth = 6, plotHeight = 6) grid::grid.newpage() .fixPlotSize(pscore, plotWidth = 6, plotHeight = 6) grid::grid.newpage() .fixPlotSize(pdensity, plotWidth = 6, plotHeight = 6) dev.off() }, error = function(e) { errorList <- list(df = df, dfDoub = dfDoub) .logError(e, fn = "ggplot", info = prefix, errorList = errorList, logFile = logFile, throwError = FALSE) }) allCells <- .availableCells(ArrowFile, passQC = FALSE) allDoubletScores <- rep(-1, length(allCells)) names(allDoubletScores) <- allCells allDoubletScores[names(simDoublets$doubletScore)] <- simDoublets$doubletScore allDoubletEnrichment <- rep(-1, length(allCells)) names(allDoubletEnrichment) <- allCells allDoubletEnrichment[names(simDoublets$doubletEnrich)] <- simDoublets$doubletEnrich o <- h5closeAll() h5write(allDoubletScores, file = ArrowFile, "Metadata/DoubletScore") h5write(allDoubletEnrichment, file = ArrowFile, "Metadata/DoubletEnrichment") o <- h5closeAll() out <- SimpleList(doubletScore = simDoublets$doubletScore, doubletEnrich = simDoublets$doubletEnrich) return(out) }, tstart = 1676487707.77214, subThreads = 16L) 44: do.call(.safelapply, args) 45: .batchlapply(args, sequential = TRUE) 46: addDoubletScores(input = ArrowFiles, k = 10, knnMethod = "UMAP", LSIMethod = 1) An irrecoverable exception occurred. R is aborting now ...

ArchR

ArchR : Version 1.0.2 For more information see our website : www.ArchRProject.com If you encounter a bug please report : https://github.com/GreenleafLab/ArchR/issues Loading Required Packages... Loading Package : grid v4.0.5 Loading Package : gridExtra v2.3 Loading Package : gtools v3.9.4 Loading Package : gtable v0.3.1 Loading Package : ggplot2 v3.4.1 Loading Package : magrittr v2.0.3 Loading Package : plyr v1.8.8 Loading Package : stringr v1.5.0 Loading Package : data.table v1.14.6 Loading Package : matrixStats v0.63.0 Loading Package : S4Vectors v0.28.1 Loading Package : GenomicRanges v1.42.0 Loading Package : BiocGenerics v0.36.1 Loading Package : Matrix v1.5.3 Loading Package : Rcpp v1.0.10 Loading Package : SummarizedExperiment v1.20.0 Loading Package : rhdf5 v2.34.0

session info

sessionInfo()

R version 4.0.5 (2021-03-31) Platform: x86_64-pc-linux-gnu (64-bit) Running under: CentOS Linux 8

Matrix products: default BLAS/LAPACK: /usr/lib64/libopenblasp-r0.3.3.so

locale: [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C [3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8 [5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 [7] LC_PAPER=en_US.UTF-8 LC_NAME=C [9] LC_ADDRESS=C LC_TELEPHONE=C [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C

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

loaded via a namespace (and not attached): [1] compiler_4.0.5

rcorces commented 1 year ago

Hi @mycho830! Thanks for using ArchR! Please make sure that your post belongs in the Issues section. Only bugs and error reports belong in the Issues section. Usage questions and feature requests should be posted in the Discussions section, not in Issues.
Before we help you, you must respond to the following questions unless your original post already contained this information: 1. If you've encountered an error, have you already searched previous Issues to make sure that this hasn't already been solved? 2. Can you recapitulate your error using the tutorial code and dataset? If so, provide a reproducible example. 3. Did you post your log file? If not, add it now. 4. Remove any screenshots that contain text and instead copy and paste the text using markdown's codeblock syntax (three consecutive backticks). You can do this by editing your original post.

rcorces commented 1 year ago

This is a system memory issue. This is almost certainly not an ArchR issue. Perhaps you requested more memory than you have. Since you didnt upload your log file, I dont have more to provide. If you requested many threads, try reducing the number of threads.