From 4892b3ff2bdcdf45fb7e43d46122df572dd31510 Mon Sep 17 00:00:00 2001 From: "Stephanie M. Gogarten" Date: Thu, 18 Apr 2019 18:52:23 -0700 Subject: [PATCH] bug fix for one sample block in pcrelate --- R/pcrelate.R | 33 +++++++++++++++++++-------------- pcrelate.py | 7 +++++-- 2 files changed, 24 insertions(+), 16 deletions(-) diff --git a/R/pcrelate.R b/R/pcrelate.R index acfc7eb4..67951578 100644 --- a/R/pcrelate.R +++ b/R/pcrelate.R @@ -53,21 +53,26 @@ iterator <- SeqVarBlockIterator(seqData, variantBlock=block.size) # create sample blocks #nsampblock <- ceiling(length(sample.include)/sample.block.size) nsampblock <- as.integer(config["n_sample_blocks"]) -samp.blocks <- unname(split(sample.include, cut(1:length(sample.include), nsampblock))) +if (nsampblock > 1) { + samp.blocks <- unname(split(sample.include, cut(1:length(sample.include), nsampblock))) -# map segment number to sample block numbers -## jobs <- list() -## s <- 1 -## for (i in 1:nsampblock) { -## for (j in i:nsampblock) { -## jobs[[s]] <- c(i,j) -## s <- s + 1 -## } -## } -jobs <- c(combn(1:nsampblock, 2, simplify=FALSE), - lapply(1:nsampblock, function(x) c(x,x))) -i <- jobs[[segment]][1] -j <- jobs[[segment]][2] + # map segment number to sample block numbers + ## jobs <- list() + ## s <- 1 + ## for (i in 1:nsampblock) { + ## for (j in i:nsampblock) { + ## jobs[[s]] <- c(i,j) + ## s <- s + 1 + ## } + ## } + jobs <- c(combn(1:nsampblock, 2, simplify=FALSE), + lapply(1:nsampblock, function(x) c(x,x))) + i <- jobs[[segment]][1] + j <- jobs[[segment]][2] +} else { + samp.blocks <- list(sample.include) + i <- j <- 1 +} out <- pcrelateSampBlock(iterator, betaobj=beta, diff --git a/pcrelate.py b/pcrelate.py index 8d24eb37..8de3c433 100755 --- a/pcrelate.py +++ b/pcrelate.py @@ -76,8 +76,11 @@ # define sample blocks n_blocks = int(configdict.setdefault("n_sample_blocks", "1")) -blocks = [(i,j) for i in range(1, n_blocks+1) for j in range(i, n_blocks+1)] -block_range = "1-" + str(len(blocks)) +if n_blocks > 1: + blocks = [(i,j) for i in range(1, n_blocks+1) for j in range(i, n_blocks+1)] + block_range = "1-" + str(len(blocks)) +else: + block_range = "1" jobid = cluster.submitJob(job_name=job, cmd=driver, args=["-s", rscript, configfile, version], holdid=[jobid], array_range=block_range, email=email, print_only=print_only)