Mercurial > repos > melpetera > testtest
view Testtest/GCMS-test.R @ 0:40de28c7d3fb draft
Uploaded
author | melpetera |
---|---|
date | Thu, 23 Nov 2017 08:50:14 -0500 |
parents | |
children |
line wrap: on
line source
# author: Pauline Ribeyre ##################### # required packages # ##################### library(batch) # provides "parseCommandargv" function ############ # init # ############ # read the parameters argv_list <- parseCommandArgs(evaluate = FALSE) #, trailingOnly = TRUE) argv <- unlist(argv_list) # common environment to share variables between files env <- new.env() # timestamp made unique by adding a random element env$timestamp <- round(as.numeric(Sys.time()) + runif(1, 0, 100)) # set working directory tmpwd <- paste0("/galaxy/data/", env$timestamp) # system("chmod -R 0777 .") # dir.create(tmpwd, mode = "0777") dir.create(tmpwd) setwd(tmpwd) # readme file readme_msg <- paste0("\"", env$timestamp, "\"", " is a temporary folder storing data for an instance of Galaxy tool \"GCMS-test\" launched on ", Sys.time(), ". ", "This folder should be deleted automatically at the end of the tool's execution. ", "If the instance ended or has been aborted and this folder still exists, it can be deleted manually.") write(readme_msg, file = "README.txt") ################ # source files # ################ source_local <- function(fname){ # Gets a file's full name in Galaxy's directories. # # Args: # fname: the name of the file. # # Returns: # The full name of the file. argv <- commandArgs(trailingOnly = FALSE) base_dir <- dirname(substring(argv[grep("--file=", argv)], 8)) return (paste(base_dir, fname, sep="/")) } env$source_settings <- source_local("GCMS-test_settings.R") env$source_analyze <- source_local("GCMS-test_analyze.R") env$source_output <- source_local("GCMS-test_output.R") env$source_spectrum <- source_local("GCMS-test_spectrum.R") env$source_file_names <- "file_names.txt" ############# # functions # ############# args_to_vary_list <- function() { # Creates the list of settings variations using the arguments. # # Returns: # The list of settings variations. param <- c("step", "steps", "mzdiff", "fwhm", "simthresh", "snthresh", "max", "minclassfraction", "minclasssize", "rtdiff") #, "minfeat") PeakPicking_param <- c("step", "steps", "mzdiff", "fwhm", "snthresh", "max") betweenSamples_param <- c("min.class.fraction", "min.class.size", "rtdiff", "simthresh") vary <- list() for (p in param) { min <- as.numeric(argv[[paste0(p, "_min")]]) max <- as.numeric(argv[[paste0(p, "_max")]]) step <- as.numeric(argv[[paste0(p, "_step")]]) if (p == "minclassfraction") p <- "min.class.fraction" else if (p == "minclasssize") p <- "min.class.size" if (p %in% PeakPicking_param) name <- paste0("PeakPicking$", p) else if (p %in% betweenSamples_param) name <- paste0("betweenSamples.", p) else stop("\"", p, "\" is not a valid parameter to vary.") # prevent seq error if (min > max) max <- min range <- seq(min, max, step) vary[[length(vary) + 1]] <- c(p, name, range) } return (vary) } read_ions_to_check <- function() { # Reads the arguments concerning the ions to check. env$ions_name <- list() env$ions_rt <- list() env$ions_mzs <- list() env$nb_ions_to_check <- length(grep("ions_name_", names(argv))) if (env$nb_ions_to_check > 0) { for (i in 1:env$nb_ions_to_check) { env$ions_name[length(env$ions_name) + 1] <- argv[[paste0("ions_name_", i)]] env$ions_rt[length(env$ions_rt) + 1] <- as.numeric(argv[[paste0("ions_rt_", i)]]) mzs <- argv[[paste0("ions_mzs_", i)]] mzs <- as.numeric(strsplit(mzs, ",")[[1]]) env$ions_mzs[length(env$ions_mzs) + 1] <- list(mzs) } } } ############ # inputs # ############ env$nb_cores <- as.numeric(argv[["nb_cores"]]) cat("Nb cores:", env$nb_cores, "\n") # get data from zip file if (!is.null(argv[["zip_file"]])) { env$cdf_files <- unzip(argv[["zip_file"]]) } else { stop("No files have been provided.") } # vary parameters env$vary_list <- args_to_vary_list() # count duplicate ions env$count_duplicates <- argv[["count_duplicates"]] == "true" if (env$count_duplicates) { # delta rt env$duplicates_delta_rt <- as.numeric(argv[["duplicates_delta_rt"]]) # delta mz env$duplicates_delta_mz <- as.numeric(argv[["duplicates_delta_mz"]]) } # check the presence of ions env$nb_ions_to_check <- 0 env$check_ions <- argv[["check_ions"]] == "true" if (env$check_ions) { read_ions_to_check() # delta rt env$ions_delta_rt <- as.numeric(argv[["ions_delta_rt"]]) # delta mz env$ions_delta_mz <- as.numeric(argv[["ions_delta_mz"]]) } ############# # outputs # ############# env$summary_out <- argv[["summary_out"]] env$peakspectra_out <- argv[["peakspectra_out"]] env$intensity_graph_out <- argv[["intensity_graph_out"]] if (env$count_duplicates) env$count_duplicates_out <- argv[["duplicates_out"]] env$compare_graph_out <- argv[["compare_graph_out"]] ########## # run # ########## cat("---------- Settings ----------\n") sys.source(env$source_settings, env) cat("---------- Analysis ----------\n") sys.source(env$source_analyze, env) cat("---------- Output ----------\n") sys.source(env$source_output, env) ########## # end # ########## # delete temporary files setwd("..") unlink(tmpwd, recursive = TRUE)