Mercurial > repos > computational-metabolomics > mspurity_createmsp
diff averageFragSpectra.R @ 0:35898942bfbb draft
"planemo upload for repository https://github.com/computational-metabolomics/mspurity-galaxy commit cb903cd93f9378cfb5eeb68512a54178dcea7bbc-dirty"
author | computational-metabolomics |
---|---|
date | Wed, 27 Nov 2019 14:20:07 -0500 |
parents | |
children | d25273689e04 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/averageFragSpectra.R Wed Nov 27 14:20:07 2019 -0500 @@ -0,0 +1,165 @@ +library(optparse) +library(msPurity) +library(xcms) +print(sessionInfo()) + + +get_av_spectra <- function(x){ + + if (length(x$av_intra)>0){ + av_intra_df <- plyr::ldply(x$av_intra) + + if (nrow(av_intra_df)==0){ + av_intra_df <- NULL + }else{ + av_intra_df$method <- 'intra' + } + + }else{ + av_intra_df <- NULL + } + + if ((is.null(x$av_inter)) || (nrow(x$av_inter)==0)){ + av_inter_df <- NULL + }else{ + av_inter_df <- x$av_inter + av_inter_df$method <- 'inter' + } + + if ((is.null(x$av_all)) || (nrow(x$av_all)==0)){ + av_all_df <- NULL + }else{ + av_all_df <- x$av_all + av_all_df$method <- 'all' + } + + combined <- plyr::rbind.fill(av_intra_df, av_inter_df, av_all_df) + + return(combined) +} + + +option_list <- list( + make_option("--out_rdata", type="character"), + make_option("--out_peaklist", type="character"), + make_option("--pa", type="character"), + + make_option("--av_level", type="character"), + + make_option("--minfrac", default=0.5), + make_option("--minnum", default=1), + make_option("--ppm", default=5.0), + + make_option("--snr", default=0), + + make_option("--ra", default=0), + + make_option("--av", default="median", type="character"), + make_option("--sumi", action="store_true"), + + make_option("--rmp", action="store_true"), + make_option("--cores", default=1) +) + +opt <- parse_args(OptionParser(option_list=option_list)) +print(opt) + + +loadRData <- function(rdata_path, name){ +#loads an RData file, and returns the named xset object if it is there + load(rdata_path) + return(get(ls()[ls() %in% name])) +} + +# Requires +pa <- loadRData(opt$pa, 'pa') + +pa@cores <- opt$cores + +if(is.null(opt$rmp)){ + rmp = FALSE +}else{ + rmp = TRUE +} + +if(is.null(opt$sumi)){ + + sumi = FALSE +}else{ + sumi = TRUE + +} + + +if(opt$av_level=="intra"){ + + pa <- msPurity::averageIntraFragSpectra(pa, + minfrac=opt$minfrac, + minnum=opt$minnum, + ppm=opt$ppm, + snr=opt$snr, + ra=opt$ra, + av=opt$av, + sumi=sumi, + rmp=rmp, + cores=opt$cores) + +} else if(opt$av_level=="inter"){ + + pa <- msPurity::averageInterFragSpectra(pa, + minfrac=opt$minfrac, + minnum=opt$minnum, + ppm=opt$ppm, + snr=opt$snr, + ra=opt$ra, + av=opt$av, + sumi=sumi, + rmp=rmp, + cores=opt$cores) +} else if(opt$av_level=="all"){ + + pa <- msPurity::averageAllFragSpectra(pa, + minfrac=opt$minfrac, + minnum=opt$minnum, + ppm=opt$ppm, + snr=opt$snr, + ra=opt$ra, + av=opt$av, + sumi=sumi, + rmp=rmp, + cores=opt$cores) + +} + +print(pa) +save(pa, file=opt$out_rdata) + + +if (length(pa)>0){ + + av_spectra <- plyr::ldply(pa@av_spectra, get_av_spectra) + + if (nrow(av_spectra)==0){ + message('No average spectra available') + } else{ + colnames(av_spectra)[1] <- 'grpid' + av_spectra$grpid <- names(pa@av_spectra)[av_spectra$grpid] + + if((length(pa@av_intra_params)>0) || (length(pa@av_inter_params)>0) ){ + # Add some extra info (only required if av_intra or av_inter performed) + colnames(av_spectra)[2] <- 'fileid' + av_spectra$avid <- 1:nrow(av_spectra) + + filenames <- sapply(av_spectra$fileid, function(x) names(pa@fileList)[as.integer(x)]) + # filenames_galaxy <- sapply(av_spectra$fileid, function(x) basename(pa@fileList[as.integer(x)])) + + av_spectra = as.data.frame(append(av_spectra, list(filename = filenames), after=2)) + } + + + print(head(av_spectra)) + write.table(av_spectra, opt$out_peaklist, row.names=FALSE, sep='\t') + + } +} +