library("PSCBS") # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Simulating copy-number data # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - set.seed(0xBEEF) # Number of loci J <- 1000 mu <- double(J) mu[200:300] <- mu[200:300] + 1 mu[350:400] <- NA # centromere mu[650:800] <- mu[650:800] - 1 eps <- rnorm(J, sd=1/2) y <- mu + eps x <- sort(runif(length(y), max=length(y))) * 1e5 w <- runif(J) w[650:800] <- 0.001 ## Create multiple chromosomes data <- knownSegments <- list() for (cc in 1:3) { data[[cc]] <- data.frame(chromosome=cc, y=y, x=x) knownSegments[[cc]] <- data.frame( chromosome=c( cc, cc, cc), start =x[c( 1, 350, 401)], end =x[c(349, 400, J)] ) } data <- Reduce(rbind, data) str(data) knownSegments <- Reduce(rbind, knownSegments) str(knownSegments) message("*** segmentByCBS() via futures ...") message("*** segmentByCBS() via futures with 'future' attached ...") library("future") oplan <- plan() strategies <- c("sequential", "multisession") ## Test 'future.batchtools' futures? pkg <- "future.batchtools" if (require(pkg, character.only=TRUE)) { strategies <- c(strategies, "batchtools_local") } message("Future strategies to test: ", paste(sQuote(strategies), collapse=", ")) fits <- list() for (strategy in strategies) { message(sprintf("- segmentByCBS() using '%s' futures ...", strategy)) plan(strategy) fit <- segmentByCBS(data, seed=0xBEEF, verbose=TRUE) fits[[strategy]] <- fit stopifnot(all.equal(fit, fits[[1]])) } message("*** segmentByCBS() via futures with known segments ...") fits <- list() dataT <- subset(data, chromosome == 1) for (strategy in strategies) { message(sprintf("- segmentByCBS() w/ known segments using '%s' futures ...", strategy)) plan(strategy) fit <- segmentByCBS(dataT, knownSegments=knownSegments, seed=0xBEEF, verbose=TRUE) fits[[strategy]] <- fit stopifnot(all.equal(fit, fits[[1]])) } message("*** segmentByCBS() via futures ... DONE") ## Cleanup plan(oplan) rm(list=c("fits", "dataT", "data", "fit"))