Mercurial > repos > blankenberglab > gpca
diff r-gpca.R @ 0:ed24bacaa4d0 draft
planemo upload for repository https://github.com/blankenberglab/galaxy-tools-blankenberg/tree/master/tools/r-gpca commit ec2f585063522efa001e4d2a639e92a67758ad8c-dirty
| author | blankenberglab |
|---|---|
| date | Mon, 19 Nov 2018 10:15:19 -0500 |
| parents | |
| children | d93629e79f5e |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/r-gpca.R Mon Nov 19 10:15:19 2018 -0500 @@ -0,0 +1,186 @@ +#!/usr/bin/env Rscript +library(optparse) +library(gPCA) + + +# parse options +option_list = list( + make_option( + c("--version"), + action = "store_true", + default = FALSE, + help = "Print version and exit" + ), + make_option( + c("-i", "--batch"), + action = "store", + default = NA, + type = 'character', + help = "Input batch" + ), + make_option( + c("-d", "--data"), + action = "store", + default = NA, + type = 'character', + help = "Input data" + ), + make_option( + c("-n", "--nperm"), + action = "store", + default = 1000, + type = 'numeric', + help = "Number of permutations to preform" + ), + make_option( + c("-c", "--center"), + action = "store_true", + default = FALSE, + help = "Is the input batch and data centered [default %default]" + ), + make_option( + c("-y", "--scaleY"), + action = "store_true", + default = FALSE, + help = "Scale to Y axis" + ), + make_option( + c("-f", "--filt"), + action = "store", + default = NULL, + type = 'numeric', + help = "Retain features" + ), + make_option( + c( "--npcs"), + action = "store", + default = 3, + type = 'numeric', + help = "Number of principal components to plot" + ), + make_option( + c("-p", "--path"), + action = "store", + default = '$html_outfile.extra_files_path', + type = 'character', + help = "File path" + ), + make_option( + c("-s", "--seed"), + action = "store", + default = NULL, + type = 'numeric', + help = "Set a seed number" + ), + make_option( + c("-x", "--numbers_outfile"), + action = "store", + default = NA, + type = 'character', + help = "Numbers output" + ), + make_option( + c("-o", "--html_outfile"), + action = "store", + default = NA, + type = 'character', + help = "Output", + ) +) + +opt <-parse_args(OptionParser(option_list = option_list)) + +if (opt$version){ + # print version and exit + cat(paste("gPCA version", toString(packageVersion("gPCA"))), "\n") + quit() +} + +# Check parameter values + +if ( ! file.exists(opt$batch)){ + stop((paste('File for batch', opt$batch, 'does not exist'))) +} +if ( ! file.exists(opt$data)){ + stop((paste('File for data', opt$data, 'does not exist'))) +} + +batch<-as.numeric(factor(as.matrix(read.delim(opt$batch, header=TRUE, row.names=1, sep="\t")))) + +data<-t(as.matrix(read.delim(opt$data, row.names=1, header=TRUE, sep="\t"))) + +out<-gPCA.batchdetect(x=data, batch=batch, center=opt$center, scaleY=opt$scaleY, nperm=opt$nperm, filt=opt$filt, seed=opt$seed) + +out$varPCg1<-((out$varPCg1-out$varPCu1)/out$varPCg1)*100 + +dir.create(opt$path); + +write.table(data.frame(out$delta, out$p.val, out$varPCg1),file=opt$numbers_outfile, sep="\t", row.name=FALSE, quote=FALSE) + +# General Distribution +par(mai=c(0.8,0.8,0.1,0.1),cex=0.8) +png(paste(opt$path,'/gDist.png', sep=""), width=1020, height=800, units='px') +gDist(out) +invisible(dev.off()) + + +# Guided/Unguided 1v2 +par(mai=c(0.8,0.8,0.1,0.1),cex=0.8) +png(paste(opt$path,'/guided_1v2.png', sep=""), width=1020, height=800, units='px') +PCplot(out,ug="unguided",type="1v2") +invisible(dev.off()) + +par(mai=c(0.8,0.8,0.1,0.1),cex=0.8) +png(paste(opt$path,'/unguided_1v2.png', sep=""), width=1020, height=800, units='px') +PCplot(out,ug="unguided",type="1v2") +invisible(dev.off()) + + +# Guided/Unguided comp,3 +par(mai=c(0.65,0.65,0.1,0.1),cex=0.8) +png(paste(opt$path,'/guided_npcs.png', sep=""), width=1020, height=800, units='px') +PCplot(out,ug="guided",type="comp",npcs=opt$npcs) +invisible(dev.off()) + +par(mai=c(0.65,0.65,0.1,0.1),cex=0.8) +png(paste(opt$path,'/unguided_npcs.png', sep=""), width=1020, height=800, units='px') +PCplot(out,ug="unguided",type="comp",npcs=opt$npcs) +invisible(dev.off()) + + +# Guided/Unguided CumlativeVarPlot +par(mai=c(0.8,0.8,0.1,0.1),cex=0.8) +png(paste(opt$path,'/guided_var.png', sep=""), width=1020, height=800, units='px') +CumulativeVarPlot(out,ug="guided",col="blue") +invisible(dev.off()) + +par(mai=c(0.8,0.8,0.1,0.1),cex=0.8) +png(paste(opt$path,'/unguided_var.png', sep=""), width=1020, height=800, units='px') +CumulativeVarPlot(out,ug="unguided",col="blue") +invisible(dev.off()) + + +write(paste('<html> +<table id="r-gpca-wrap" align="center" border="1"> + <tr> + <th>Delta</th><th>P-value</th><th>varPCg1</th> + </tr> + <tr> + <td id=delta>',out$delta,'</td><td id=p.val>',out$p.val,'</td><td id=varPCg1>',out$varPCg1,'</td> + </tr> +</table> + +<center><img src="gDist.png"/></center><br> +<center><title>Guided 1v2</title><br><img src="guided_1v2.png"/></center><br> +<center><title>Unguided 1v2</title><br><img src="unguided_1v2.png"/></center><br> + +<center><title>Guided Compare to ',opt$npcs,'</title><br><img src="guided_npcs.png"/></center><br> +<center><title>Unguided Compare to ',opt$npcs,'</title><br><img src="unguided_npcs.png"/></center><br> + +<center><title>Guided Cumulative Variance</title><br><img src="guided_var.png"/></center><br> +<center><title>Unguided Cumulative Variance</title><br><img src="unguided_var.png"/></center><br> + +</html>' +),file = opt$html_outfile) + +sessionInfo()
