[BioC] scanBam error with bamViews
Martin Morgan
mtmorgan at fhcrc.org
Fri Jun 18 11:25:39 CEST 2010
On 06/17/2010 09:30 AM, Paul Leo wrote:
> I am trying to download an "exons worth of reads" from a collection of
> Bam files using a bamViews object. The index files are stored locally al
> la Rsamtools documentation and suggested code. Typically less that 50
> reads per bam file are obtained.
>
> Occasionally the connection times out (I think?) which causes the R
> session to crash (the documentation hits to problems with unreliable
> connections)
>
> I don't mind the connection timing out, or it even being unreliable,
> but how to I catch the error without losing the session?
> Codes works fine most of the time and there is no case where I can
> reliably reproduce the error, but some info is provided which may help
> those wiser than I...
>
> Even without the crash I wonder IF the connection timed out for failed
> how would I know this occurred for a given file ; is there a
> success/fail info I can access anywhere... that is, would I know the
> difference between no reads in that region or the retrieval just
> failed? (So far I have *found* no cases where an empty list resulted
> from a failed connection).
Hi Paul -- It's hard to know where the error below is coming from, but
I'll try to track down; if you can provide a reproducible example that
would be great, or if on your end running
R -d gdb -f someScript.R
and then
gdb> run
[time passes, crash occurs]
gdb> backtrace
and forwarding the result to me.
Graceful recovery is an area for improvement in Rsamtools, so I'll work
on it. In the mean time you can track progress with something like
> trace(Rsamtools:::.io_bam, quote(cat("file:", file, "\n")))
before the call.
Your sessionInfo says R-2.12 (i.e., R under development) but many of
your packages have an even second-digit version number (e.g., in
Biostrings 2.16.5 with version x.y.z has y=16), and even second-digit
versions are associated with the release version of R / Bioconductor.
You'll want to update packages following "Update installed Bioconductor
packages" at
http://bioconductor.org/docs/install/
and install new packages using biocLite to avoid mixing and matching in
the future.
Martin
>
> Thanks
> Paul
>
>
>> radial<- try(scanBam(bv,param=params))
> [kftp_connect_file] 227 Entering Passive Mode (193,62,197,91,149,230)
>
>
> *** caught bus error ***
> address (nil), cause 'unknown'
>
> Traceback:
> 1: .Call(func, file, index, "rb", list(space(which), .uunlist(start(which)), .uunlist(end(which))), flag, simpleCigar, ...)
> 2: .io_bam(.scan_bam, file, index, reverseComplement, tmpl, param = param)
> 3: scanBam(file = bamPaths(bamViews)[i], index = bamIndicies(bamViews)[i], ...)
> 4: scanBam(file = bamPaths(bamViews)[i], index = bamIndicies(bamViews)[i], ...)
> 5: FUN(...)
> 6: doTryCatch(return(expr), name, parentenv, handler)
> 7: tryCatchOne(expr, names, parentenv, handlers[[1L]])
> 8: tryCatchList(expr, classes, parentenv, handlers)
> 9: tryCatch({ FUN(...)}, error = function(err) { msg <- paste(capture.output(conditionCall(err)), conditionMessage(err), sep = "\n ") if (is.loaded("mpi_comm_size")) SRError("RemoteError", msg) else SRError("UnspecifiedError", msg)})
> 10: FUN(c(5L, 13L, 21L, 29L)[[4L]], ...)
> 11: lapply(S, FUN, ...)
> 12: doTryCatch(return(expr), name, parentenv, handler)
> 13: tryCatchOne(expr, names, parentenv, handlers[[1L]])
> 14: tryCatchList(expr, classes, parentenv, handlers)
> 15: tryCatch(expr, error = function(e) { call <- conditionCall(e) if (!is.null(call)) { if (identical(call[[1L]], quote(doTryCatch))) call <- sys.call(-4L) dcall <- deparse(call)[1L] prefix <- paste("Error in", dcall, ": ") LONG <- 75L msg <- conditionMessage(e) sm <- strsplit(msg, "\n")[[1L]] w <- 14L + nchar(dcall, type = "w") + nchar(sm[1L], type = "w") if (is.na(w)) w <- 14L + nchar(dcall, type = "b") + nchar(sm[1L], type = "b") if (w > LONG) prefix <- paste(prefix, "\n ", sep = "") } else prefix <- "Error : " msg <- paste(prefix, conditionMessage(e), "\n", sep = "") .Internal(seterrmessage(msg[1L])) if (!silent && identical(getOption("show.error.messages"), TRUE)) { cat(msg, file = stderr()) .Internal(printDeferredWarnings()) } invisible(structure(msg, class = "try-error"))})
> 16: try(lapply(S, FUN, ...), silent = TRUE)
> 17: sendMaster(try(lapply(S, FUN, ...), silent = TRUE))
> 18: FUN(1:8[[5L]], ...)
> 19: lapply(1:cores, inner.do)
> 20: mcLapply(X, CFUN, ..., verbose = verbose)
> 21: fapply(X, FUN, ..., verbose = verbose)
> 22: .srapply(idx, fun, bamViews, ...)
> 23: .BamViews_delegate("scanBam", file, fun, ..., param = param)
> 24: scanBam(bv, param = params)
> 25: scanBam(bv, param = params)
> 26: doTryCatch(return(expr), name, parentenv, handler)
> 27: tryCatchOne(expr, names, parentenv, handlers[[1L]])
> 28: tryCatchList(expr, classes, parentenv, handlers)
> 29: tryCatch(expr, error = function(e) { call <- conditionCall(e) if (!is.null(call)) { if (identical(call[[1L]], quote(doTryCatch))) call <- sys.call(-4L) dcall <- deparse(call)[1L] prefix <- paste("Error in", dcall, ": ") LONG <- 75L msg <- conditionMessage(e) sm <- strsplit(msg, "\n")[[1L]] w <- 14L + nchar(dcall, type = "w") + nchar(sm[1L], type = "w") if (is.na(w)) w <- 14L + nchar(dcall, type = "b") + nchar(sm[1L], type = "b") if (w > LONG) prefix <- paste(prefix, "\n ", sep = "") } else prefix <- "Error : " msg <- paste(prefix, conditionMessage(e), "\n", sep = "") .Internal(seterrmessage(msg[1L])) if (!silent && identical(getOption("show.error.messages"), TRUE)) { cat(msg, file = stderr()) .Internal(printDeferredWarnings()) } invisible(structure(msg, class = "try-error"))})
> 30: try(scanBam(bv, param = params))
>
> Possible actions:
> 1: abort (with core dump, if enabled)
> 2: normal R exit
> 3: exit R without saving workspace
> 4: exit R saving workspace
> Selection:
>
> R version 2.12.0 Under development (unstable) (2010-04-18 r51771)
> x86_64-unknown-linux-gnu
>
> locale:
> [1] LC_CTYPE=en_AU.UTF-8 LC_NUMERIC=C
> [3] LC_TIME=en_AU.UTF-8 LC_COLLATE=en_AU.UTF-8
> [5] LC_MONETARY=C LC_MESSAGES=en_AU.UTF-8
> [7] LC_PAPER=en_AU.UTF-8 LC_NAME=C
> [9] LC_ADDRESS=C LC_TELEPHONE=C
> [11] LC_MEASUREMENT=en_AU.UTF-8 LC_IDENTIFICATION=C
>
> attached base packages:
> [1] stats graphics grDevices utils datasets methods base
>
> other attached packages:
> [1] Rsamtools_1.0.5 Biostrings_2.16.5 RCurl_1.4-2
> [4] bitops_1.0-4.1 GenomicFeatures_1.0.0 GenomicRanges_1.0.3
> [7] IRanges_1.6.6 multicore_0.1-3
>
> loaded via a namespace (and not attached):
> [1] Biobase_2.8.0 biomaRt_2.4.0 BSgenome_1.16.4 DBI_0.2-5
> [5] RSQLite_0.9-1 rtracklayer_1.8.1 XML_3.1-0
>>
>
>
>
>
>
>
> [[alternative HTML version deleted]]
>
> _______________________________________________
> Bioconductor mailing list
> Bioconductor at stat.math.ethz.ch
> https://stat.ethz.ch/mailman/listinfo/bioconductor
> Search the archives: http://news.gmane.org/gmane.science.biology.informatics.conductor
--
Martin Morgan
Computational Biology / Fred Hutchinson Cancer Research Center
1100 Fairview Ave. N.
PO Box 19024 Seattle, WA 98109
Location: Arnold Building M1 B861
Phone: (206) 667-2793
More information about the Bioconductor
mailing list