Hi,
I ran dada2 with the command below and got the error:
Given error: address 0x2ac83afde87c, cause 'non-existent physical address', caught bus error.
I noticed from previous topics that this error would apparently be hardware, but I tested it running on both our cluster bridge machine and SLURM job and got the same error message. I also tested with test data (mockrobiota paired-end) and see the same error.
Could the error not be related to QIIME2 installation? Any suggestion?
Running external command line application(s). This may print messages to stdout and/or stderr.
The command(s) being run are below. These commands cannot be manually re-run as they will depend on temporary files that no longer exist.
Command: run_dada_paired.R /home/luiz.nunes/qiime2-tmp/tmpsd3k4xue/forward /home/luiz.nunes/qiime2-tmp/tmpsd3k4xue/reverse /home/luiz.nunes/qiime2-tmp/tmpsd3k4xue/output.tsv.biom /home/luiz.nunes/qiime2-tmp/tmpsd3k4xue/track.tsv /home/luiz.nunes/qiime2-tmp/tmpsd3k4xue/filt_f /home/luiz.nunes/qiime2-tmp/tmpsd3k4xue/filt_r 0 0 0 0 2.0 2.0 2 consensus 1.0 1 1000000
R version 3.5.1 (2018-07-02)
Loading required package: Rcpp
DADA2: 1.10.0 / Rcpp: 1.0.2 / RcppParallel: 4.4.3
1) Filtering
*** caught bus error ***
address 0x7ffffff7a210, cause 'non-existent physical address'
Traceback:
1: isNamespace(ns)
2: findHomeNS(name, frame, cntxt)
3: nsName(findHomeNS(name, frame, cntxt))
4: getInlineInfo(name, cntxt, guardOK = TRUE)
5: tryInline(call, cb, cntxt)
6: cmpCall(e, cb, cntxt)
7: cmp(value, cb, ncntxt)
8: cmpComplexAssign(symbol, lhs, value, superAssign, cb, cntxt)
9: h(e, cb, cntxt)
10: tryInline(call, cb, cntxt)
11: cmpCall(e, cb, cntxt)
12: cmp(body, cb, lcntxt)
13: cmpForBody(callidx, body, ci, cb, cntxt)
14: h(e, cb, cntxt)
15: tryInline(call, cb, cntxt)
16: cmpCall(e, cb, cntxt)
17: cmp(subexp, cb, ncntxt, setloc = FALSE)
18: h(e, cb, cntxt)
19: tryInline(call, cb, cntxt)
20: cmpCall(e, cb, cntxt)
21: cmp(value, cb, ncntxt)
22: cmpSymbolAssign(symbol, value, superAssign, cb, cntxt)
23: h(e, cb, cntxt)
24: tryInline(call, cb, cntxt)
25: cmpCall(e, cb, cntxt)
26: cmp(subexp, cb, ncntxt, setloc = FALSE)
27: h(e, cb, cntxt)
28: tryInline(call, cb, cntxt)
29: cmpCall(e, cb, cntxt)
30: cmp(then.expr, cb, cntxt)
31: h(e, cb, cntxt)
32: tryInline(call, cb, cntxt)
33: cmpCall(e, cb, cntxt)
34: cmp(e, cb, cntxt, setloc = FALSE)
35: genCode(body(f), ncntxt, loc = loc)
36: cmpfun(f)
37: doTryCatch(return(expr), name, parentenv, handler)
38: tryCatchOne(expr, names, parentenv, handlers[[1L]])
39: tryCatchList(expr, classes, parentenv, handlers)
40: tryCatch(cmpfun(f), error = function(e) { notifyCompilerError(paste(e$message, "at", deparse(e$call))) f})
41: compiler:::tryCmpfun(new("MethodDefinition", .Data = function (from, to = "Vector", strict = TRUE) if (strict) { from <- { value <- new("IRanges") for (what in c("start", "width", "NAMES", "elementType", "elementMetadata", "metadata")) slot(value, what) <- slot(from, what) value } from} else from, target = new("signature", .Data = c("GroupedIRanges", "Vector"), names = c("from", "to"), package = c("XVector", "S4Vectors")), defined = new("signature", .Data = c("GroupedIRanges", "Vector"), names = c("from", "to"), package = c("XVector", "S4Vectors")), generic = "coerce"))
42: asMethod(object)
43: as(object, superClass)
44: .valid.Vector.length(x)
45: valid.func(object)
46: validityMethod(as(object, superClass))
47: isTRUE(x)
48: anyStrings(validityMethod(as(object, superClass)))
49: validObject(ans)
50: bindROWS(x_slot, slot_list)
51: bindROWS(x_slot, slot_list)
52: FUN(X[[i]], ...)
53: lapply(setNames(pslotnames, pslotnames), function(slotname) { x_slot <- slot(x, slotname) if (is.null(x_slot)) return(NULL) slot_list <- lapply(objects, slot, slotname) bindROWS(x_slot, slot_list)})
54: lapply(setNames(pslotnames, pslotnames), function(slotname) { x_slot <- slot(x, slotname) if (is.null(x_slot)) return(NULL) slot_list <- lapply(objects, slot, slotname) bindROWS(x_slot, slot_list)})
55: .nextMethod(x, objects, use.names = use.names, ignore.mcols = ignore.mcols, check = FALSE)
56: eval(call, callEnv)
57: eval(call, callEnv)
58: callNextMethod(x, objects, use.names = use.names, ignore.mcols = ignore.mcols, check = FALSE)
59: bindROWS(x, list(...), ignore.mcols = ignore.mcols)
60: bindROWS(x, list(...), ignore.mcols = ignore.mcols)
61: .local(x, ...)
62: .Primitive("c")(new("DNAStringSet", pool = new("SharedRaw_Pool", xp_list = list(<pointer: (nil)>), .link_to_cached_object_list = list( <environment>)), ranges = new("GroupedIRanges", group = 1L, start = 1L, width = 5386L, NAMES = "phix", elementType = "ANY", elementMetadata = NULL, metadata = list()), elementType = "DNAString", elementMetadata = NULL, metadata = list()))
63: .Primitive("c")(new("DNAStringSet", pool = new("SharedRaw_Pool", xp_list = list(<pointer: (nil)>), .link_to_cached_object_list = list( <environment>)), ranges = new("GroupedIRanges", group = 1L, start = 1L, width = 5386L, NAMES = "phix", elementType = "ANY", elementMetadata = NULL, metadata = list()), elementType = "DNAString", elementMetadata = NULL, metadata = list()))
64: do.call(c, FASTAlist)
65: do.call(c, FASTAlist)
66: readFasta(system.file("extdata", "phix_genome.fa", package = "dada2"))
67: readFasta(system.file("extdata", "phix_genome.fa", package = "dada2"))
68: sread(readFasta(system.file("extdata", "phix_genome.fa", package = "dada2")))
69: .class1(object)
70: as(sread(readFasta(system.file("extdata", "phix_genome.fa", package = "dada2"))), "character")
71: isPhiX(as(sread(fqR), "character"), ...)
72: (function (fn, fout, maxN = c(0, 0), truncQ = c(2, 2), truncLen = c(0, 0), maxLen = c(Inf, Inf), minLen = c(20, 20), trimLeft = c(0, 0), trimRight = c(0, 0), minQ = c(0, 0), maxEE = c(Inf, Inf), rm.phix = c(TRUE, TRUE), matchIDs = FALSE, orient.fwd = NULL, id.sep = "\\s", id.field = NULL, n = 1e+06, OMP = TRUE, compress = TRUE, verbose = FALSE, ...) { if (!OMP) { ompthreads <- .Call(ShortRead:::.set_omp_threads, 1L) on.exit(.Call(ShortRead:::.set_omp_threads, ompthreads)) } if (!is.character(fn) || length(fn) != 2) stop("Two paired input file names required.") if (!is.character(fout) || length(fout) != 2) stop("Two paired output file names required.") if (any(duplicated(c(fn, fout)))) { stop("The output and input file names must be different.") } for (var in c("maxN", "truncQ", "truncLen", "maxLen", "minLen", "trimLeft", "trimRight", "minQ", "maxEE", "rm.phix")) { if (length(get(var)) == 1) { assign(var, c(get(var), get(var))) } if (length(get(var)) != 2) { stop(paste("Input variable", var, "must be length 1 or 2 (Forward, Reverse).")) } } startF <- max(1, trimLeft[[1]] + 1, na.rm = TRUE) startR <- max(1, trimLeft[[2]] + 1, na.rm = TRUE) endF <- truncLen[[1]] if (endF < startF) { endF = NA } endF <- endF - startF + 1 endR <- truncLen[[2]] if (endR < startR) { endR = NA } endR <- endR - startR + 1 fF <- FastqStreamer(fn[[1]], n = n) on.exit(close(fF)) fR <- FastqStreamer(fn[[2]], n = n) on.exit(close(fR), add = TRUE) if (file.exists(fout[[1]])) { if (file.remove(fout[[1]])) { if (verbose) message("Overwriting file:", fout[[1]]) } else { stop("Failed to overwrite file:", fout[[1]]) } } if (file.exists(fout[[2]])) { if (file.remove(fout[[2]])) { if (verbose) message("Overwriting file:", fout[[2]]) } else { stop("Failed to overwrite file:", fout[[2]]) } } first = TRUE remainderF <- ShortReadQ() remainderR <- ShortReadQ() casava <- "Undetermined" inseqs = 0 outseqs = 0 while (TRUE) { suppressWarnings(fqF <- yield(fF)) suppressWarnings(fqR <- yield(fR)) if (length(fqF) == 0 && length(fqR) == 0) { break } inseqs <- inseqs + length(fqF) if (matchIDs) { if (first) { if (is.null(id.field)) { id1 <- as.character(id(fqF)[[1]]) id.fields <- strsplit(id1, id.sep)[[1]] ncolon <- sapply(gregexpr(":", id.fields), length) ncoltab <- table(ncolon) if (max(ncolon) == 6 && ncoltab["6"] == 1) { casava <- "Current" id.field <- which(ncolon == 6) } else if (max(ncolon) == 4 && ncoltab["4"] == 1) { casava <- "Old" id.field <- which(ncolon == 4) } else { stop("Couldn't automatically detect the sequence identifier field in the fastq id string.") } } } else { fqF <- append(remainderF, fqF) fqR <- append(remainderR, fqR) } } else { if (length(fqF) != length(fqR)) stop("Mismatched forward and reverse sequence files: ", length(fqF), ", ", length(fqR), ".") } if (matchIDs) { idsF <- sapply(strsplit(as.character(id(fqF)), id.sep), `[`, id.field) idsR <- sapply(strsplit(as.character(id(fqR)), id.sep), `[`, id.field) if (casava == "Old") { idsF <- sapply(strsplit(idsF, "#"), `[`, 1) } lastF <- max(c(0, which(idsF %in% idsR))) lastR <- max(c(0, which(idsR %in% idsF))) if (lastF < length(fqF)) { remainderF <- fqF[(lastF + 1):length(fqF)] } else { remainderF <- ShortReadQ() } if (lastR < length(fqR)) { remainderR <- fqR[(lastR + 1):length(fqR)] } else { remainderR <- ShortReadQ() } fqF <- fqF[idsF %in% idsR] fqR <- fqR[idsR %in% idsF] } if (!is.null(orient.fwd)) { if (!C_isACGT(orient.fwd)) stop("Non-ACGT characters detected in orient.fwd") barlen <- nchar(orient.fwd) keepF <- narrow(sread(fqF), 1, barlen) == orient.fwd keepR <- (narrow(sread(fqR), 1, barlen) == orient.fwd) & !keepF fq <- ShortReadQ(sread = c(sread(fqF[keepF]), sread(fqR[keepR])), quality = c(quality(quality(fqF[keepF])), quality(quality(fqR[keepR]))), id = c(id(fqF[keepF]), id(fqR[keepR]))) fqR <- ShortReadQ(sread = c(sread(fqR[keepF]), sread(fqF[keepR])), quality = c(quality(quality(fqR[keepF])), quality(quality(fqF[keepR]))), id = c(id(fqR[keepF]), id(fqF[keepR]))) fqF <- fq rm(fq) } if (is.finite(maxLen[[1]]) || is.finite(maxLen[[2]])) { keep <- width(fqF) <= maxLen[[1]] & width(fqR) <= maxLen[[2]] fqF <- fqF[keep] fqR <- fqR[keep] } keep <- (width(fqF) >= startF & width(fqR) >= startR) fqF <- fqF[keep] fqF <- narrow(fqF, start = startF, end = NA) fqR <- fqR[keep] fqR <- narrow(fqR, start = startR, end = NA) if (trimRight[[1]] > 0) { keep <- width(fqF) > trimRight[[1]] fqF <- fqF[keep] fqR <- fqR[keep] fqF <- narrow(fqF, start = NA, end = width(fqF) - trimRight[[1]]) } if (trimRight[[2]] > 0) { keep <- width(fqR) > trimRight[[2]] fqF <- fqF[keep] fqR <- fqR[keep] fqR <- narrow(fqR, start = NA, end = width(fqR) - trimRight[[2]]) } encF <- encoding(quality(fqF)) encR <- encoding(quality(fqR)) if (is.numeric(truncQ)) { indF <- which(encF == truncQ[[1]]) indR <- which(encR == truncQ[[2]]) if (!(length(indF) == 1 && length(indR) == 1)) stop("Encoding for this truncQ value not found.") truncQ <- c(names(encF)[[indF]], names(encR)[[indR]]) } if (length(fqF) > 0) { rngF <- trimTails(fqF, 1, truncQ[[1]], ranges = TRUE) fqF <- narrow(fqF, 1, end(rngF)) } if (length(fqR) > 0) { rngR <- trimTails(fqR, 1, truncQ[[2]], ranges = TRUE) fqR <- narrow(fqR, 1, end(rngR)) } truncQ <- c(encF[truncQ[1]], encR[truncQ[2]]) keep <- (width(fqF) > 0 & width(fqR) > 0) fqF <- fqF[keep] fqR <- fqR[keep] keep <- rep(TRUE, length(fqF)) if (!is.na(endF)) { keep <- keep & (width(fqF) >= endF) } if (!is.na(endR)) { keep <- keep & (width(fqR) >= endR) } fqF <- fqF[keep] fqR <- fqR[keep] fqF <- narrow(fqF, start = 1, end = endF) fqR <- narrow(fqR, start = 1, end = endR) keep <- width(fqF) >= minLen[[1]] & width(fqR) >= minLen[[2]] fqF <- fqF[keep] fqR <- fqR[keep] suppressWarnings(keep <- nFilter(maxN[[1]])(fqF) & nFilter(maxN[[2]])(fqR)) fqF <- fqF[keep] fqR <- fqR[keep] keep <- rep(TRUE, length(fqF)) qmat <- as(quality(fqF), "matrix") if (minQ[[1]] > truncQ[[1]]) suppressWarnings(keep <- keep & (apply(qmat, 1, min, na.rm = TRUE) > minQ[[1]])) if (maxEE[[1]] < Inf) keep <- keep & C_matrixEE(qmat) <= maxEE[[1]] qmat <- as(quality(fqR), "matrix") if (minQ[[2]] > truncQ[[2]]) suppressWarnings(keep <- keep & (apply(qmat, 1, min, na.rm = TRUE) > minQ[[2]])) if (maxEE[[2]] < Inf) keep <- keep & C_matrixEE(qmat) <= maxEE[[2]] fqF <- fqF[keep] fqR <- fqR[keep] rm(qmat) if (length(fqF) != length(fqR)) stop("Filtering caused mismatch between forward and reverse sequence lists: ", length(fqF), ", ", length(fqR), ".") if (rm.phix[[1]] && rm.phix[[2]]) { is.phi <- isPhiX(as(sread(fqF), "character"), ...) is.phi <- is.phi | isPhiX(as(sread(fqR), "character"), ...) } else if (rm.phix[[1]] && !rm.phix[[2]]) { is.phi <- isPhiX(as(sread(fqF), "character"), ...) } else if (!rm.phix[[1]] && rm.phix[[2]]) { is.phi <- isPhiX(as(sread(fqR), "character"), ...) } if (any(rm.phix)) { fqF <- fqF[!is.phi] fqR <- fqR[!is.phi] } outseqs <- outseqs + length(fqF) if (first) { writeFastq(fqF, fout[[1]], "w", compress = compress) writeFastq(fqR, fout[[2]], "w", compress = compress) first = FALSE } else { writeFastq(fqF, fout[[1]], "a", compress = compress) writeFastq(fqR, fout[[2]], "a", compress = compress) } } if (outseqs == 0) { } if (verbose) { outperc <- round(outseqs * 100/inseqs, 1) outperc <- paste(" (", outperc, "%)", sep = "") message("Read in ", inseqs, " paired-sequences, output ", outseqs, outperc, " filtered paired-sequences.", sep = "") } if (outseqs == 0) { message(paste("The filter removed all reads:", fout[[1]], "and", fout[[2]], "not written.")) file.remove(fout[[1]]) file.remove(fout[[2]]) } return(invisible(c(reads.in = inseqs, reads.out = outseqs)))})(dots[[1L]][[1L]], dots[[2L]][[1L]], truncQ = 2L, truncLen = c(0L, 0L), trimLeft = c(0L, 0L), trimRight = 0, maxLen = Inf, minLen = 20, maxN = 0, minQ = 0, maxEE = c(2, 2), rm.phix = TRUE, orient.fwd = NULL, matchIDs = FALSE, id.sep = "\\s", id.field = NULL, n = 1e+05, OMP = TRUE, compress = TRUE, verbose = FALSE)
73: .mapply(FUN, dots, MoreArgs)
74: FUN(X[[i]], ...)
75: lapply(X = X, FUN = FUN, ...)
76: mclapply(seq_len(n), do_one, mc.preschedule = mc.preschedule, mc.set.seed = mc.set.seed, mc.silent = mc.silent, mc.cores = mc.cores, mc.cleanup = mc.cleanup, affinity.list = affinity.list)
77: mcmapply(fastqPairedFilter, mapply(c, fwd, rev, SIMPLIFY = FALSE), mapply(c, filt, filt.rev, SIMPLIFY = FALSE), MoreArgs = list(truncQ = truncQ, truncLen = truncLen, trimLeft = trimLeft, trimRight = trimRight, maxLen = maxLen, minLen = minLen, maxN = maxN, minQ = minQ, maxEE = maxEE, rm.phix = rm.phix, orient.fwd = orient.fwd, matchIDs = matchIDs, id.sep = id.sep, id.field = id.field, n = n, OMP = OMP, compress = compress, verbose = verbose), mc.cores = ncores, mc.silent = TRUE)
78: filterAndTrim(unfiltsF, filtsF, unfiltsR, filtsR, truncLen = c(truncLenF, truncLenR), trimLeft = c(trimLeftF, trimLeftR), maxEE = c(maxEEF, maxEER), truncQ = truncQ, rm.phix = TRUE, multithread = multithread)
79: withCallingHandlers(expr, warning = function(w) invokeRestart("muffleWarning"))
80: suppressWarnings(filterAndTrim(unfiltsF, filtsF, unfiltsR, filtsR, truncLen = c(truncLenF, truncLenR), trimLeft = c(trimLeftF, trimLeftR), maxEE = c(maxEEF, maxEER), truncQ = truncQ, rm.phix = TRUE, multithread = multithread))
An irrecoverable exception occurred. R is aborting now ...
Traceback (most recent call last):
File "/home/luiz.nunes/miniconda3/envs/qiime2-2019.7/lib/python3.6/site-packages/q2_dada2/_denoise.py", line 234, in denoise_paired
run_commands([cmd])
File "/home/luiz.nunes/miniconda3/envs/qiime2-2019.7/lib/python3.6/site-packages/q2_dada2/_denoise.py", line 36, in run_commands
subprocess.run(cmd, check=True)
File "/home/luiz.nunes/miniconda3/envs/qiime2-2019.7/lib/python3.6/subprocess.py", line 418, in run
output=stdout, stderr=stderr)
subprocess.CalledProcessError: Command '['run_dada_paired.R', '/home/luiz.nunes/qiime2-tmp/tmpsd3k4xue/forward', '/home/luiz.nunes/qiime2-tmp/tmpsd3k4xue/reverse', '/home/luiz.nunes/qiime2-tmp/tmpsd3k4xue/output.tsv.biom', '/home/luiz.nunes/qiime2-tmp/tmpsd3k4xue/track.tsv', '/home/luiz.nunes/qiime2-tmp/tmpsd3k4xue/filt_f', '/home/luiz.nunes/qiime2-tmp/tmpsd3k4xue/filt_r', '0', '0', '0', '0', '2.0', '2.0', '2', 'consensus', '1.0', '1', '1000000']' died with <Signals.SIGBUS: 7>.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/luiz.nunes/miniconda3/envs/qiime2-2019.7/lib/python3.6/site-packages/q2cli/commands.py", line 327, in __call__
results = action(**arguments)
File "</home/luiz.nunes/miniconda3/envs/qiime2-2019.7/lib/python3.6/site-packages/decorator.py:decorator-gen-465>", line 2, in denoise_paired
File "/home/luiz.nunes/miniconda3/envs/qiime2-2019.7/lib/python3.6/site-packages/qiime2/sdk/action.py", line 240, in bound_callable
output_types, provenance)
File "/home/luiz.nunes/miniconda3/envs/qiime2-2019.7/lib/python3.6/site-packages/qiime2/sdk/action.py", line 383, in _callable_executor_
output_views = self._callable(**view_args)
File "/home/luiz.nunes/miniconda3/envs/qiime2-2019.7/lib/python3.6/site-packages/q2_dada2/_denoise.py", line 249, in denoise_paired
" and stderr to learn more." % e.returncode)
Exception: An error was encountered while running DADA2 in R (return code -7), please inspect stdout and stderr to learn more.