Mercurial > repos > computational-metabolomics > mspurity_frag4feature
diff purityX.R @ 0:85bc606fd219 draft default tip
"planemo upload for repository https://github.com/computational-metabolomics/mspurity-galaxy commit 2579c8746819670348c378f86116f83703c493eb"
author | computational-metabolomics |
---|---|
date | Thu, 04 Mar 2021 12:22:55 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/purityX.R Thu Mar 04 12:22:55 2021 +0000 @@ -0,0 +1,180 @@ +library(msPurity) +library(optparse) +print(sessionInfo()) + +option_list <- list( + make_option(c("--xset_path"), type = "character"), + make_option(c("-o", "--out_dir"), type = "character"), + make_option(c("--mzML_path"), type = "character"), + make_option("--minOffset", default = 0.5), + make_option("--maxOffset", default = 0.5), + make_option("--ilim", default = 0.05), + make_option("--iwNorm", default = "none", type = "character"), + make_option("--exclude_isotopes", action = "store_true"), + make_option("--isotope_matrix", type = "character"), + make_option("--purityType", default = "purityFWHMmedian"), + make_option("--singleFile", default = 0), + make_option("--cores", default = 4), + make_option("--xgroups", type = "character"), + make_option("--rdata_name", default = "xset"), + make_option("--camera_xcms", default = "xset"), + make_option("--files", type = "character"), + make_option("--galaxy_files", type = "character"), + make_option("--choose_class", type = "character"), + make_option("--ignore_files", type = "character"), + make_option("--rtraw_columns", action = "store_true") +) + + +opt <- parse_args(OptionParser(option_list = option_list)) +print(opt) + + +if (!is.null(opt$xgroups)) { + xgroups <- as.numeric(strsplit(opt$xgroups, ",")[[1]]) +}else{ + xgroups <- NULL +} + + +print(xgroups) + +if (!is.null(opt$remove_nas)) { + df <- df[!is.na(df$mz), ] +} + +if (is.null(opt$isotope_matrix)) { + im <- NULL +}else{ + im <- read.table(opt$isotope_matrix, + header = TRUE, sep = "\t", stringsAsFactors = FALSE) +} + +if (is.null(opt$exclude_isotopes)) { + isotopes <- FALSE +}else{ + isotopes <- TRUE +} + +if (is.null(opt$rtraw_columns)) { + rtraw_columns <- FALSE +}else{ + rtraw_columns <- TRUE +} + +loadRData <- function(rdata_path, xset_name) { +#loads an RData file, and returns the named xset object if it is there + load(rdata_path) + return(get(ls()[ls() == xset_name])) +} + +target_obj <- loadRData(opt$xset_path, opt$rdata_name) + +if (opt$camera_xcms == "camera") { + xset <- target_obj@xcmsSet +}else{ + xset <- target_obj +} + +print(xset) + +minOffset <- as.numeric(opt$minOffset) +maxOffset <- as.numeric(opt$maxOffset) + +if (opt$iwNorm == "none") { + iwNorm <- FALSE + iwNormFun <- NULL +}else if (opt$iwNorm == "gauss") { + iwNorm <- TRUE + iwNormFun <- msPurity::iwNormGauss(minOff = -minOffset, maxOff = maxOffset) +}else if (opt$iwNorm == "rcosine") { + iwNorm <- TRUE + iwNormFun <- msPurity::iwNormRcosine(minOff = -minOffset, maxOff = maxOffset) +}else if (opt$iwNorm == "QE5") { + iwNorm <- TRUE + iwNormFun <- msPurity::iwNormQE.5() +} + +print(xset@filepaths) + +if (!is.null(opt$files)) { + updated_filepaths <- trimws(strsplit(opt$files, ",")[[1]]) + updated_filepaths <- updated_filepaths[updated_filepaths != ""] + print(updated_filepaths) + updated_filenames <- basename(updated_filepaths) + original_filenames <- basename(xset@filepaths) + update_idx <- match(updated_filenames, original_filenames) + + if (!is.null(opt$galaxy_files)) { + galaxy_files <- trimws(strsplit(opt$galaxy_files, ",")[[1]]) + galaxy_files <- galaxy_files[galaxy_files != ""] + xset@filepaths <- galaxy_files[update_idx] + }else{ + xset@filepaths <- updated_filepaths[update_idx] + } +} + +if (!is.null(opt$choose_class)) { + classes <- trimws(strsplit(opt$choose_class, ",")[[1]]) + + ignore_files_class <- which(!as.character(xset@phenoData$class) %in% classes) + + print("choose class") + print(ignore_files_class) +}else{ + ignore_files_class <- NA +} + +if (!is.null(opt$ignore_files)) { + ignore_files_string <- trimws(strsplit(opt$ignore_files, ",")[[1]]) + filenames <- rownames(xset@phenoData) + ignore_files <- which(filenames %in% ignore_files_string) + + ignore_files <- unique(c(ignore_files, ignore_files_class)) + ignore_files <- ignore_files[ignore_files != ""] +}else{ + if (anyNA(ignore_files_class)) { + ignore_files <- NULL + }else{ + ignore_files <- ignore_files_class + } + +} + +print("ignore_files") +print(ignore_files) + + +ppLCMS <- msPurity::purityX(xset = xset, + offsets = c(minOffset, maxOffset), + cores = opt$cores, + xgroups = xgroups, + purityType = opt$purityType, + ilim = opt$ilim, + isotopes = isotopes, + im = im, + iwNorm = iwNorm, + iwNormFun = iwNormFun, + singleFile = opt$singleFile, + fileignore = ignore_files, + rtrawColumns = rtraw_columns) + +dfp <- ppLCMS@predictions + +# to make compatable with deconrank +colnames(dfp)[colnames(dfp) == "grpid"] <- "peakID" +colnames(dfp)[colnames(dfp) == "median"] <- "medianPurity" +colnames(dfp)[colnames(dfp) == "mean"] <- "meanPurity" +colnames(dfp)[colnames(dfp) == "sd"] <- "sdPurity" +colnames(dfp)[colnames(dfp) == "stde"] <- "sdePurity" +colnames(dfp)[colnames(dfp) == "RSD"] <- "cvPurity" +colnames(dfp)[colnames(dfp) == "pknm"] <- "pknmPurity" + +if (sum(is.na(dfp$medianPurity)) > 0) { + dfp[is.na(dfp$medianPurity), ]$medianPurity <- 0 +} + +print(head(dfp)) +write.table(dfp, file.path(opt$out_dir, "purityX_output.tsv"), row.names = FALSE, sep = "\t") + +save.image(file.path(opt$out_dir, "purityX_output.RData"))