clsapply <- function(dat, func, df=NULL, tempdir="~/project/tempZ",
queque="1-day", timespan="540", mem="8G", req.pack='stats',
tidy=F) {
# Apply to the row of dat by default (dim=2 for column)
# Create temp dir
if (!file.exists(tempdir)) {
dir.create(tempdir)
}
setwd(tempdir)
save(dat, func, df, file=("dat.RData"))
nJob <- length(dat)
# Create R script
txt <- paste('
args=(commandArgs(TRUE))
if(length(args)==0){
print("No arguments supplied.")
##supply default values
} else{
for(i in 1:length(args)){
eval(parse(text=args[[i]]))
}
}',
paste(paste0('\nrequire(',req.pack, ')'), collapse="\n"),
'\n date()
load("dat.RData")
if (is.list(dat)) {
item <- dat[[part]]
}
if (is.vector(dat)) {
item <- dat[part]
}
res0 <- func(item, df)
save(res0, file=paste(part, ".res", sep=""))
date()
')
writeLines(txt, "script.R")
# Submit job
cat("Submit jobs ...")
prefix <- paste(c("J", sample(LETTERS, 4, repl=TRUE)), collapse="")
for (part in 1:nJob) {
rfile <- "script.R"
rout <- paste(part, ".Rout", sep="")
sh <- paste(
"qsub",
paste0("-N ", prefix, part),
"-j y",
"-cwd",
# "-t", timespan,
"-q", queque,
"-m abe",
paste0("-l h_vmem=", mem),
"-V",
paste("-o ", part, ".out", sep=""),
paste("-e ", part, ".err", sep=""),
"-b y",
paste("\'R CMD BATCH --no-save --no-restore \"--args part=", part, "\" ",
rfile, " ", rout, "\'", sep="")
)
print(sh)
system(sh)
}
## sbatch -J RP -t 240 -p general --mem 64000 -o RP.out -e RP.err --wrap='R CMD BATCH --no-save --no-restore ROC_SVA_PCA_ResultProcess_alpha.R RP.Rout'
# cat("Please wait ...\n")
# # To see if all the jobs have been finished
# while (TRUE) {
# Sys.sleep(20)
# output1 <- system("qstat ", intern=TRUE)
# output2 <- system("qstat ", intern=TRUE)
# missingfile <- NULL
# if (length(grep(prefix, output1)) == 0 & length(grep(prefix, output2)) == 0) {
# cat("All jobs finished and begin to combine\n")
# res <- NULL
# for (part in 1:nJob) {
# resfile <- paste(part, ".res", sep="")
# if (file.exists(resfile)) {
# load(resfile)
# res[[paste(part)]] <- res0
# rm(res0)
# cat(".")
# } else {
# # cat("\n", resfile, " not found!\n")
# missingfile <- c(missingfile, resfile)
# }
# }
# cat("\n")
# break
# }
# gc()
# }
#
# cat("Missing files:\n")
# if (length(missingfile) == 0) {
# cat("No jobs dropped!\n")
# } else{
# cat(paste(missingfile, collapse="\n"))
# }
# # Clean
# if (tidy == TRUE) {
# cat("\nBegin to tidy up ...")
# system("rm *")
# }
# cat("\nDone!\n")
# return(res)
}
#resdir <- "~/project/orderfdr/Sim9.4"
#setwd(resdir)
#missingfile <- NULL
#res <- NULL
#nJob <- 100
#for (part in 1:nJob) {
# resfile <- paste('./tmpC/', part, ".res", sep="")
# if (file.exists(resfile)) {
# load(resfile)
# res[[paste(part)]] <- res0
# rm(res0)
# cat(".")
# } else {
# # cat("\n", resfile, " not found!\n")
# missingfile <- c(missingfile, resfile)
# }
#}
#
#cat("Missing files:\n")
#if (length(missingfile) == 0) {
# cat("No jobs dropped!\n")
#} else{
# cat(paste(missingfile, collapse="\n"))
#}
#
#save(res, file=file.path(resdir, paste('Sim9.4', "_res.Rdata", sep="")))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.