[Bioc-devel] The story of tracing a derfinder bug on OSX that sometimes popped up, sometimes it didn't. Related to IRanges/S4Vectors '$<-'
Leonardo Collado Torres
lcollado at jhu.edu
Tue Mar 21 23:06:11 CET 2017
Hi bioc-devel,
This is a story about a bug that took me a long time to trace. The
behaviour was really weird, so I'm sharing the story in case this
helps others in the future. I was originally writing it to request
help, but then I was able to find the issue ^^. The story ends right
now with code that will reproduce the problem with '$<-' from
IRanges/S4Vectors.
During this Bioc cycle, frequently my package derfinder has failed to
pass R CMD check in OSX. The error is always the same when it appears
and sometimes it shows up in release, but not devel and viceversa.
Right now (3/21/2017) it's visible in both
http://bioconductor.org/checkResults/release/bioc-LATEST/derfinder/morelia-checksrc.html
and http://bioconductor.org/checkResults/devel/bioc-LATEST/derfinder/toluca2-checksrc.html.
The end of "test-all.Rout.fail" looks like this:
Loading required package: foreach
Loading required package: iterators
Loading required package: locfit
locfit 1.5-9.1 2013-03-22
getSegments: segmenting
getSegments: splitting
2017-03-20 02:36:52 findRegions: smoothing
2017-03-20 02:36:52 findRegions: identifying potential segments
2017-03-20 02:36:52 findRegions: segmenting information
2017-03-20 02:36:52 .getSegmentsRle: segmenting with cutoff(s) 16.3681899295041
2017-03-20 02:36:52 findRegions: identifying candidate regions
2017-03-20 02:36:52 findRegions: identifying region clusters
2017-03-20 02:36:52 findRegions: smoothing
2017-03-20 02:36:52 findRegions: identifying potential segments
2017-03-20 02:36:52 findRegions: segmenting information
2017-03-20 02:36:52 .getSegmentsRle: segmenting with cutoff(s) 19.7936614060235
2017-03-20 02:36:52 findRegions: identifying candidate regions
2017-03-20 02:36:52 findRegions: identifying region clusters
2017-03-20 02:36:52 findRegions: smoothing
*** caught segfault ***
address 0x7f87d2f917e0, cause 'memory not mapped'
Traceback:
1: (function (y, x, cluster, weights, smoothFun, ...) {
hostPackage <- environmentName(environment(smoothFun))
requireNamespace(hostPackage) smoothed <- .runFunFormal(smoothFun,
y = y, x = x, cluster = cluster, weights = weights, ...) if
(any(!smoothed$smoothed)) { smoothed$fitted[!smoothed$smoothed]
<- y[!smoothed$smoothed] } res <- Rle(smoothed$fitted)
return(res)})(dots[[1L]][[1L]], dots[[2L]][[1L]], dots[[3L]][[1L]],
dots[[4L]][[1L]], smoothFun = function (y, x = NULL, cluster,
weights = NULL, minNum = 7, bpSpan = 1000, minInSpan = 0,
verbose = TRUE) { if (is.null(dim(y))) y <-
matrix(y, ncol = 1) if (!is.null(weights) &&
is.null(dim(weights))) weights <- matrix(weights, ncol =
1) if (is.null(x)) x <- seq(along = y) if
(is.null(weights)) weights <- matrix(1, nrow = nrow(y),
ncol = ncol(y)) Indexes <- split(seq(along = cluster), cluster)
clusterL <- sapply(Indexes, length) smoothed <-
rep(TRUE, nrow(y)) for (i in seq(along = Indexes)) {
if (verbose) if (i%%10000 == 0)
cat(".") Index <- Indexes[[i]] if (clusterL[i]
>= minNum & sum(rowSums(is.na(y[Index, , drop =
FALSE])) == 0) >= minNum) { nn <-
minInSpan/length(Index) for (j in 1:ncol(y)) {
sdata <- data.frame(pos = x[Index], y = y[Index,
j], weights = weights[Index, j]) fit <-
locfit(y ˜ lp(pos, nn = nn, h = bpSpan), data =
sdata, weights = weights, family = "gaussian",
maxk = 10000) pp <- preplot(fit, where = "data", band
= "local", newdata = data.frame(pos = x[Index]))
y[Index, j] <- pp$trans(pp$fit) }
} else { y[Index, ] <- NA
smoothed[Index] <- FALSE } }
return(list(fitted = y, smoothed = smoothed, smoother = "locfit"))
}, verbose = TRUE, minNum = 1435)
2: .mapply(.FUN, dots, .MoreArgs)
3: FUN(...)
4: doTryCatch(return(expr), name, parentenv, handler)
5: tryCatchOne(expr, names, parentenv, handlers[[1L]])
6: tryCatchList(expr, classes, parentenv, handlers)
7: tryCatch({ FUN(...)}, error = handle_error)
8: withCallingHandlers({ tryCatch({ FUN(...) }, error =
handle_error)}, warning = handle_warning)
9: FUN(X[[i]], ...)
10: lapply(X, FUN, ...)
11: bplapply(X = seq_along(ddd[[1L]]), wrap, .FUN = FUN, .ddd = ddd,
.MoreArgs = MoreArgs, BPREDO = BPREDO, BPPARAM = BPPARAM)
12: bplapply(X = seq_along(ddd[[1L]]), wrap, .FUN = FUN, .ddd = ddd,
.MoreArgs = MoreArgs, BPREDO = BPREDO, BPPARAM = BPPARAM)
13: bpmapply(.smoothFstatsFun, fstatsChunks, posChunks, clusterChunks,
weightChunks, MoreArgs = list(smoothFun = smoothFunction,
...), BPPARAM = BPPARAM)
14: bpmapply(.smoothFstatsFun, fstatsChunks, posChunks, clusterChunks,
weightChunks, MoreArgs = list(smoothFun = smoothFunction,
...), BPPARAM = BPPARAM)
15: .smootherFstats(fstats = fstats, position = position, weights =
weights, smoothFunction = smoothFunction, ...)
16: findRegions(prep$position, genomeFstats, "chr21", verbose = TRUE,
smooth = TRUE, minNum = 1435)
17: eval(exprs, env)
18: eval(exprs, env)
19: source_file(path, new.env(parent = env), chdir = TRUE)
20: force(code)
21: with_reporter(reporter = reporter, start_end_reporter =
start_end_reporter, { lister$start_file(basename(path))
source_file(path, new.env(parent = env), chdir = TRUE)
end_context() })
22: FUN(X[[i]], ...)
23: lapply(paths, test_file, env = env, reporter = current_reporter,
start_end_reporter = FALSE, load_helpers = FALSE)
24: force(code)
25: with_reporter(reporter = current_reporter, results <-
lapply(paths, test_file, env = env, reporter = current_reporter,
start_end_reporter = FALSE, load_helpers = FALSE))
26: test_files(paths, reporter = reporter, env = env, ...)
27: test_dir(test_path, reporter = reporter, env = env, filter =
filter, ...)
28: with_top_env(env, { test_dir(test_path, reporter = reporter,
env = env, filter = filter, ...)})
29: run_tests(package, test_path, filter, reporter, ...)
30: test_check("derfinder")
An irrecoverable exception occurred. R is aborting now ...
I was finally able to reproduce this error on my Mac OSX laptop after
running R CMD build and R CMD check (same options as in Bioc) several
times. It took me a while, but I figured out what's the exact code
that's failing. It can be reproduced (noting that it won't always
fail...) in OSX by running:
library('derfinder')
prep <- preprocessCoverage(genomeData, cutoff=0, scalefac=32, chunksize=1e3,
colsubset=NULL)
regs_s3 <- findRegions(prep$position, genomeFstats, 'chr21',
verbose=TRUE, smooth = TRUE, minNum = 1435)
Here is the output from my laptop one time it actually failed:
> library('derfinder')
prep <- preprocessCoverage(genomeData, cutoff=0, scalefac=32, chunksize=1e3,
colsubset=NULL)
> prep <- preprocessCoverage(genomeData, cutoff=0, scalefac=32, chunksize=1e3,
+ colsubset=NULL)
> regs_s3 <- findRegions(prep$position, genomeFstats, 'chr21', verbose=TRUE, smooth = TRUE, minNum = 1435)
2017-03-21 16:37:39 findRegions: smoothing
*** caught segfault ***
address 0x7f958dbf2be0, cause 'memory not mapped'
Traceback:
1: (function (y, x, cluster, weights, smoothFun, ...) {
hostPackage <- environmentName(environment(smoothFun))
requireNamespace(hostPackage) smoothed <- .runFunFormal(smoothFun,
y = y, x = x, cluster = cluster, weights = weights, ...) if
(any(!smoothed$smoothed)) { smoothed$fitted[!smoothed$smoothed]
<- y[!smoothed$smoothed] } res <- Rle(smoothed$fitted)
return(res)})(dots[[1L]][[1L]], dots[[2L]][[1L]], dots[[3L]][[1L]],
dots[[4L]][[1L]], smoothFun = function (y, x = NULL, cluster,
weights = NULL, minNum = 7, bpSpan = 1000, minInSpan = 0,
verbose = TRUE) { if (is.null(dim(y))) y <-
matrix(y, ncol = 1) if (!is.null(weights) &&
is.null(dim(weights))) weights <- matrix(weights, ncol =
1) if (is.null(x)) x <- seq(along = y) if
(is.null(weights)) weights <- matrix(1, nrow = nrow(y),
ncol = ncol(y)) Indexes <- split(seq(along = cluster), cluster)
clusterL <- sapply(Indexes, length) smoothed <-
rep(TRUE, nrow(y)) for (i in seq(along = Indexes)) {
if (verbose) if (i%%10000 == 0)
cat(".") Index <- Indexes[[i]] if (clusterL[i]
>= minNum & sum(rowSums(is.na(y[Index, , drop =
FALSE])) == 0) >= minNum) { nn <-
minInSpan/length(Index) for (j in 1:ncol(y)) {
sdata <- data.frame(pos = x[Index], y = y[Index,
j], weights = weights[Index, j]) fit <-
locfit(y ~ lp(pos, nn = nn, h = bpSpan), data =
sdata, weights = weights, family = "gaussian",
maxk = 10000) pp <- preplot(fit, where = "data", band
= "local", newdata = data.frame(pos = x[Index]))
y[Index, j] <- pp$trans(pp$fit) }
} else { y[Index, ] <- NA
smoothed[Index] <- FALSE } }
return(list(fitted = y, smoothed = smoothed, smoother = "locfit"))
}, verbose = TRUE, minNum = 1435)
2: .mapply(.FUN, dots, .MoreArgs)
3: FUN(...)
4: doTryCatch(return(expr), name, parentenv, handler)
5: tryCatchOne(expr, names, parentenv, handlers[[1L]])
6: tryCatchList(expr, classes, parentenv, handlers)
7: tryCatch({ FUN(...)}, error = handle_error)
8: withCallingHandlers({ tryCatch({ FUN(...) }, error =
handle_error)}, warning = handle_warning)
9: FUN(X[[i]], ...)
10: lapply(X, FUN, ...)
11: bplapply(X = seq_along(ddd[[1L]]), wrap, .FUN = FUN, .ddd = ddd,
.MoreArgs = MoreArgs, BPREDO = BPREDO, BPPARAM = BPPARAM)
12: bplapply(X = seq_along(ddd[[1L]]), wrap, .FUN = FUN, .ddd = ddd,
.MoreArgs = MoreArgs, BPREDO = BPREDO, BPPARAM = BPPARAM)
13: bpmapply(.smoothFstatsFun, fstatsChunks, posChunks, clusterChunks,
weightChunks, MoreArgs = list(smoothFun = smoothFunction,
...), BPPARAM = BPPARAM)
14: bpmapply(.smoothFstatsFun, fstatsChunks, posChunks, clusterChunks,
weightChunks, MoreArgs = list(smoothFun = smoothFunction,
...), BPPARAM = BPPARAM)
15: .smootherFstats(fstats = fstats, position = position, weights =
weights, smoothFunction = smoothFunction, ...)
16: findRegions(prep$position, genomeFstats, "chr21", verbose = TRUE,
smooth = TRUE, minNum = 1435)
Possible actions:
1: abort (with core dump, if enabled)
2: normal R exit
3: exit R without saving workspace
4: exit R saving workspace
The traceback information ends at's bumphunter::loessByCluster().
I have successfully used the following code other times (see below)
where I test the culprit line 100 times. By successfully, I mean that
the code ran without problems... so it was unsuccessful at reproducing
the problem.
library('derfinder')
prep <- preprocessCoverage(genomeData, cutoff=0, scalefac=32, chunksize=1e3,
colsubset=NULL)
for(i in 1:100) {
print(i)
regs_s3 <- findRegions(prep$position, genomeFstats, 'chr21',
verbose=TRUE, smooth = TRUE, minNum = 1435)
}
options(width = 120)
devtools::session_info()
I had several R processes open the one time it did fail, but well,
I've had multiple of them open the times that the code didn't fail. So
having multiple R processes doesn't seem to be an issue.
The line that triggers the segfault is used simply to test that
passing the argument 'minNum' to bumphunter::loessByCluster() via
'...' works. It's not a relevant test for derfinder and I was tempted
to remove it, although before tracing the bug I talked with Valerie
about not removing it. With the upcoming Bioconductor release I
decided to finally trace the line that triggers the segfault. At this
point I was feeling lost...
Running the following code seems to trigger the segfault more often (I
got it like 4 times in a row):
library('derfinder')
prep <- preprocessCoverage(genomeData, cutoff=0, scalefac=32, chunksize=1e3,
colsubset=NULL)
regs_s1 <- findRegions(prep$position, genomeFstats, 'chr21',
verbose=TRUE, smooth = TRUE)
regs_s2 <- findRegions(prep$position, genomeFstats, 'chr21',
verbose=TRUE, smooth = TRUE, smoothFunction =
bumphunter::runmedByCluster)
regs_s3 <- findRegions(prep$position, genomeFstats, 'chr21',
verbose=TRUE, smooth = TRUE, minNum = 1435)
But then I can still run the same code without problems on a for loop
for 100 times:
library('derfinder')
prep <- preprocessCoverage(genomeData, cutoff=0, scalefac=32, chunksize=1e3,
colsubset=NULL)
for(i in 1:100) {
print(i)
regs_s1 <- findRegions(prep$position, genomeFstats, 'chr21',
verbose=TRUE, smooth = TRUE)
regs_s2 <- findRegions(prep$position, genomeFstats, 'chr21',
verbose=TRUE, smooth = TRUE, smoothFunction =
bumphunter::runmedByCluster)
regs_s3 <- findRegions(prep$position, genomeFstats, 'chr21',
verbose=TRUE, smooth = TRUE, minNum = 1435)
}
options(width = 120)
devtools::session_info()
I next thought of going through findRegions() to produce simple
objects that could reproduce the error. I had in mine sharing these
objects so it would be easier for others to help me figure out what
was failing. It turns out that this code segfaulted reliably (all the
times I tested it at least):
library('derfinder')
library('BiocParallel')
library('IRanges')
prep <- preprocessCoverage(genomeData, cutoff=0, scalefac=32, chunksize=1e3,
colsubset=NULL)
fstats <- genomeFstats
position <- prep$position
weights <- NULL
cluster <- derfinder:::.clusterMakerRle(position, 300L)
cluster
BPPARAM <- SerialParam()
iChunks <- rep(1, length(cluster))
fstatsChunks <- split(fstats, iChunks)
posChunks <- split(which(position), iChunks)
clusterChunks <- split(cluster, iChunks)
weightChunks <- vector('list', length = length(unique(iChunks)))
res <- bpmapply(bumphunter::loessByCluster, fstatsChunks, posChunks,
clusterChunks, weightChunks, MoreArgs = list(minNum = 1435),
BPPARAM = BPPARAM, SIMPLIFY = FALSE)
y <- fstatsChunks[[1]]
smoothed <- res[[1]]
## This segfaults:
if(any(!smoothed$smoothed)) {
smoothed$fitted[!smoothed$smoothed] <- y[!smoothed$smoothed]
}
The objects on the line that fail are a list and an Rle:
> y
numeric-Rle of length 1434 with 358 runs
Lengths: 1 5 ... 1
Values : 5.109484425367 3.85228949953674 ... 3.99765511645983
> lapply(smoothed, head)
$fitted
[,1]
[1,] NA
[2,] NA
[3,] NA
[4,] NA
[5,] NA
[6,] NA
$smoothed
[1] FALSE FALSE FALSE FALSE FALSE FALSE
$smoother
[1] "loess"
> table(!smoothed$smoothed)
TRUE
1434
> y[!smoothed$smoothed]
numeric-Rle of length 1434 with 358 runs
Lengths: 1 5 ... 1
Values : 5.109484425367 3.85228949953674 ... 3.99765511645983
So in my derfinder code I was assigning an Rle to a matrix, and that
was the segfault. I have no idea why this doesn't always fail on OSX
and why it never failed on Linux or Windows.
This is the super simplified IRanges code that fails:
library('IRanges')
y <- Rle(runif(10, 1, 1))
smoothed <- list('fitted' = matrix(NA, ncol = 1, nrow = 10),
'smoothed' = rep(FALSE, 10), smoother = 'loess')
sessionInfo()
smoothed$fitted[!smoothed$smoothed] <- y[!smoothed$smoothed]
## Segfault on OSX
> library('IRanges')
> y <- Rle(runif(10, 1, 1))
> smoothed <- list('fitted' = matrix(NA, ncol = 1, nrow = 10),
+ 'smoothed' = rep(FALSE, 10), smoother = 'loess')
>
> sessionInfo()
R Under development (unstable) (2016-10-26 r71594)
Platform: x86_64-apple-darwin13.4.0 (64-bit)
Running under: macOS Sierra 10.12.3
locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
attached base packages:
[1] stats4 parallel stats graphics grDevices utils
datasets methods base
other attached packages:
[1] IRanges_2.9.19 S4Vectors_0.13.15 BiocGenerics_0.21.3
> smoothed$fitted[!smoothed$smoothed] <- y[!smoothed$smoothed]
*** caught segfault ***
address 0x7fcdc31dffe0, cause 'memory not mapped'
Possible actions:
1: abort (with core dump, if enabled)
2: normal R exit
3: exit R without saving workspace
4: exit R saving workspace
## No problems on Linux
> library('IRanges')
> y <- Rle(runif(10, 1, 1))
> smoothed <- list('fitted' = matrix(NA, ncol = 1, nrow = 10),
+ 'smoothed' = rep(FALSE, 10), smoother = 'loess')
>
> sessionInfo()
R version 3.3.1 Patched (2016-09-30 r71426)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Red Hat Enterprise Linux Server release 6.6 (Santiago)
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] stats4 parallel stats graphics grDevices datasets utils
[8] methods base
other attached packages:
[1] IRanges_2.8.2 S4Vectors_0.12.2 BiocGenerics_0.20.0
[4] colorout_1.1-2
loaded via a namespace (and not attached):
[1] tools_3.3.1
> smoothed$fitted[!smoothed$smoothed] <- y[!smoothed$smoothed]
Best,
Leo
The session information for my first tests is below:
> devtools::session_info()
Session info -----------------------------------------------------------------------------------------------------------
setting value
version R Under development (unstable) (2016-10-26 r71594)
system x86_64, darwin13.4.0
ui X11
language (EN)
collate en_US.UTF-8
tz America/New_York
date 2017-03-21
Packages ---------------------------------------------------------------------------------------------------------------
package * version date source
acepack 1.4.1 2016-10-29 CRAN (R 3.4.0)
AnnotationDbi 1.37.4 2017-03-10 Bioconductor
assertthat 0.1 2013-12-06 CRAN (R 3.4.0)
backports 1.0.5 2017-01-18 CRAN (R 3.4.0)
base64enc 0.1-3 2015-07-28 CRAN (R 3.4.0)
Biobase 2.35.1 2017-02-23 Bioconductor
BiocGenerics * 0.21.3 2017-01-12 Bioconductor
BiocParallel 1.9.5 2017-01-24 Bioconductor
biomaRt 2.31.4 2017-01-13 Bioconductor
Biostrings 2.43.5 2017-03-19 cran (@2.43.5)
bitops 1.0-6 2013-08-17 CRAN (R 3.4.0)
BSgenome 1.43.7 2017-02-24 Bioconductor
bumphunter * 1.15.0 2016-10-23 Bioconductor
checkmate 1.8.2 2016-11-02 CRAN (R 3.4.0)
cluster 2.0.6 2017-03-16 CRAN (R 3.4.0)
codetools 0.2-15 2016-10-05 CRAN (R 3.4.0)
colorout * 1.1-2 2016-11-15 Github (jalvesaq/colorout at 6d84420)
colorspace 1.3-2 2016-12-14 CRAN (R 3.4.0)
crayon 1.3.2 2016-06-28 CRAN (R 3.4.0)
data.table 1.10.4 2017-02-01 CRAN (R 3.4.0)
DBI 0.6 2017-03-09 CRAN (R 3.4.0)
DelayedArray 0.1.7 2017-02-17 Bioconductor
derfinder * 1.9.10 2017-03-17 cran (@1.9.10)
derfinderHelper 1.9.4 2017-03-07 Bioconductor
devtools 1.12.0 2016-12-05 CRAN (R 3.4.0)
digest 0.6.12 2017-01-27 CRAN (R 3.4.0)
doRNG 1.6 2014-03-07 CRAN (R 3.4.0)
foreach * 1.4.3 2015-10-13 CRAN (R 3.4.0)
foreign 0.8-67 2016-09-13 CRAN (R 3.4.0)
Formula 1.2-1 2015-04-07 CRAN (R 3.4.0)
GenomeInfoDb * 1.11.9 2017-02-08 Bioconductor
GenomeInfoDbData 0.99.0 2017-02-14 Bioconductor
GenomicAlignments 1.11.12 2017-03-16 cran (@1.11.12)
GenomicFeatures 1.27.10 2017-03-16 cran (@1.27.10)
GenomicFiles 1.11.4 2017-03-10 Bioconductor
GenomicRanges * 1.27.23 2017-02-25 Bioconductor
ggplot2 2.2.1 2016-12-30 CRAN (R 3.4.0)
gridExtra 2.2.1 2016-02-29 CRAN (R 3.4.0)
gtable 0.2.0 2016-02-26 CRAN (R 3.4.0)
Hmisc 4.0-2 2016-12-31 CRAN (R 3.4.0)
htmlTable 1.9 2017-01-26 CRAN (R 3.4.0)
htmltools 0.3.5 2016-03-21 CRAN (R 3.4.0)
htmlwidgets 0.8 2016-11-09 CRAN (R 3.4.0)
IRanges * 2.9.19 2017-03-15 cran (@2.9.19)
iterators * 1.0.8 2015-10-13 CRAN (R 3.4.0)
knitr 1.15.1 2016-11-22 CRAN (R 3.4.0)
lattice 0.20-34 2016-09-06 CRAN (R 3.4.0)
latticeExtra 0.6-28 2016-02-09 CRAN (R 3.4.0)
lazyeval 0.2.0 2016-06-12 CRAN (R 3.4.0)
locfit * 1.5-9.1 2013-04-20 CRAN (R 3.4.0)
magrittr 1.5 2014-11-22 CRAN (R 3.4.0)
Matrix 1.2-8 2017-01-20 CRAN (R 3.4.0)
matrixStats 0.51.0 2016-10-09 CRAN (R 3.4.0)
memoise 1.0.0 2016-01-29 CRAN (R 3.4.0)
munsell 0.4.3 2016-02-13 CRAN (R 3.4.0)
nnet 7.3-12 2016-02-02 CRAN (R 3.4.0)
pkgmaker 0.22 2014-05-14 CRAN (R 3.4.0)
plyr 1.8.4 2016-06-08 CRAN (R 3.4.0)
qvalue 2.7.0 2016-10-23 Bioconductor
R6 2.2.0 2016-10-05 CRAN (R 3.4.0)
RColorBrewer 1.1-2 2014-12-07 CRAN (R 3.4.0)
Rcpp 0.12.10 2017-03-19 CRAN (R 3.4.0)
RCurl 1.95-4.8 2016-03-01 CRAN (R 3.4.0)
registry 0.3 2015-07-08 CRAN (R 3.4.0)
reshape2 1.4.2 2016-10-22 CRAN (R 3.4.0)
rngtools 1.2.4 2014-03-06 CRAN (R 3.4.0)
rpart 4.1-10 2015-06-29 CRAN (R 3.4.0)
Rsamtools 1.27.13 2017-03-14 cran (@1.27.13)
RSQLite 1.1-2 2017-01-08 CRAN (R 3.4.0)
rtracklayer 1.35.9 2017-03-19 cran (@1.35.9)
S4Vectors * 0.13.15 2017-02-14 cran (@0.13.15)
scales 0.4.1 2016-11-09 CRAN (R 3.4.0)
stringi 1.1.2 2016-10-01 CRAN (R 3.4.0)
stringr 1.2.0 2017-02-18 CRAN (R 3.4.0)
SummarizedExperiment 1.5.7 2017-02-23 Bioconductor
survival 2.41-2 2017-03-16 CRAN (R 3.4.0)
testthat * 1.0.2 2016-04-23 CRAN (R 3.4.0)
tibble 1.2 2016-08-26 CRAN (R 3.4.0)
VariantAnnotation 1.21.17 2017-02-12 Bioconductor
withr 1.0.2 2016-06-20 CRAN (R 3.4.0)
XML 3.98-1.5 2016-11-10 CRAN (R 3.4.0)
xtable 1.8-2 2016-02-05 CRAN (R 3.4.0)
XVector 0.15.2 2017-02-02 Bioconductor
zlibbioc 1.21.0 2016-10-23 Bioconductor
More information about the Bioc-devel
mailing list