-
Notifications
You must be signed in to change notification settings - Fork 9
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
1a9f037
commit 288f662
Showing
121 changed files
with
301 additions
and
184 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,118 @@ | ||
#' @title scAtomic | ||
#' @description This function executes a ubuntu docker that execute scAtomic on a csv file | ||
#' @param group, a character string. Two options: sudo or docker, depending to which group the user belongs | ||
#' @param scratch.folder, a character string indicating the path of the scratch folder | ||
#' @param file, a character string indicating the path of the file, with file name and extension included | ||
#' @param separator, separator used in count file, e.g. '\\t', ',' | ||
|
||
#' @author Raffaele Calogero | ||
#' | ||
#' @return results | ||
#' | ||
#' @examples | ||
#' \dontrun{ | ||
#'scAtomic(group="docker",scratch.folder="/home/lucastormreig/sc-atomic/wtc1cls1/",file="/home/lucastormreig/sc-atomic/wtc1cls1/s1abr_wt_c1_Cluster1.csv",separator=",") | ||
#'} | ||
#' @export | ||
scAtomic <- function(group=c("sudo","docker"), scratch.folder, file, separator){ | ||
|
||
data.folder=dirname(file) | ||
positions=length(strsplit(basename(file),"\\.")[[1]]) | ||
matrixNameC=strsplit(basename(file),"\\.")[[1]] | ||
matrixName=paste(matrixNameC[seq(1,positions-1)],collapse="") | ||
format=strsplit(basename(basename(file)),"\\.")[[1]][positions] | ||
|
||
|
||
#running time 1 | ||
ptm <- proc.time() | ||
#setting the data.folder as working folder | ||
if (!file.exists(data.folder)){ | ||
cat(paste("\nIt seems that the ",data.folder, " folder does not exist\n")) | ||
return(2) | ||
} | ||
|
||
#storing the position of the home folder | ||
home <- getwd() | ||
setwd(data.folder) | ||
#initialize status | ||
system("echo 0 > ExitStatusFile 2>&1") | ||
|
||
#testing if docker is running | ||
test <- dockerTest() | ||
if(!test){ | ||
cat("\nERROR: Docker seems not to be installed in your system\n") | ||
system("echo 10 > ExitStatusFile 2>&1") | ||
setwd(home) | ||
return(10) | ||
} | ||
|
||
|
||
|
||
#check if scratch folder exist | ||
if (!file.exists(scratch.folder)){ | ||
cat(paste("\nIt seems that the ",scratch.folder, " folder does not exist\n")) | ||
system("echo 3 > ExitStatusFile 2>&1") | ||
setwd(data.folder) | ||
return(3) | ||
} | ||
tmp.folder <- gsub(":","-",gsub(" ","-",date())) | ||
scrat_tmp.folder=file.path(scratch.folder, tmp.folder) | ||
writeLines(scrat_tmp.folder,paste(data.folder,"/tempFolderID", sep="")) | ||
cat("\ncreating a folder in scratch folder\n") | ||
dir.create(file.path(scrat_tmp.folder)) | ||
#preprocess matrix and copying files | ||
|
||
if(separator=="\t"){ | ||
separator="tab" | ||
} | ||
|
||
system(paste("cp ",data.folder,"/",matrixName,".",format," ",scrat_tmp.folder,"/",sep="")) | ||
|
||
|
||
#executing the docker job | ||
params <- paste("--cidfile ",data.folder,"/dockerID -v ",scrat_tmp.folder,":/scratch -v ", data.folder, ":/data -d repbioinfo/scatomicr Rscript /home/command.R ",matrixName," ",format," ",separator,sep="") | ||
|
||
resultRun <- runDocker(group=group, params=params) | ||
|
||
#waiting for the end of the container work | ||
if(resultRun==0){ | ||
#system(paste("cp ", scrat_tmp.folder, "/* ", data.folder, sep="")) | ||
} | ||
#running time 2 | ||
ptm <- proc.time() - ptm | ||
dir <- dir(data.folder) | ||
dir <- dir[grep("run.info",dir)] | ||
if(length(dir)>0){ | ||
con <- file("run.info", "r") | ||
tmp.run <- readLines(con) | ||
close(con) | ||
tmp.run[length(tmp.run)+1] <- paste("user run time mins ",ptm[1]/60, sep="") | ||
tmp.run[length(tmp.run)+1] <- paste("system run time mins ",ptm[2]/60, sep="") | ||
tmp.run[length(tmp.run)+1] <- paste("elapsed run time mins ",ptm[3]/60, sep="") | ||
writeLines(tmp.run,"run.info") | ||
}else{ | ||
tmp.run <- NULL | ||
tmp.run[1] <- paste("run time mins ",ptm[1]/60, sep="") | ||
tmp.run[length(tmp.run)+1] <- paste("system run time mins ",ptm[2]/60, sep="") | ||
tmp.run[length(tmp.run)+1] <- paste("elapsed run time mins ",ptm[3]/60, sep="") | ||
|
||
writeLines(tmp.run,"run.info") | ||
} | ||
|
||
#saving log and removing docker container | ||
container.id <- readLines(paste(data.folder,"/dockerID", sep=""), warn = FALSE) | ||
system(paste("docker logs ", substr(container.id,1,12), " &> ",data.folder,"/", substr(container.id,1,12),".log", sep="")) | ||
system(paste("docker rm ", container.id, sep="")) | ||
|
||
|
||
#Copy result folder | ||
cat("Copying Result Folder") | ||
system(paste("cp -r ",scrat_tmp.folder,"/* ",data.folder,sep="")) | ||
#removing temporary folder | ||
cat("\n\nRemoving the temporary file ....\n") | ||
system(paste("rm -R ",scrat_tmp.folder)) | ||
system("rm -fR out.info") | ||
system("rm -fR dockerID") | ||
system("rm -fR tempFolderID") | ||
setwd(home) | ||
} |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
Oops, something went wrong.