Mercurial > repos > mingchen0919 > rmarkdown_deseq2
diff DESeq_results_render.R @ 3:a520a6c5e111 draft default tip
update
| author | mingchen0919 |
|---|---|
| date | Tue, 27 Feb 2018 15:30:28 -0500 |
| parents | 8b324ea5dc8a |
| children |
line wrap: on
line diff
--- a/DESeq_results_render.R Tue Feb 27 14:07:10 2018 -0500 +++ b/DESeq_results_render.R Tue Feb 27 15:30:28 2018 -0500 @@ -1,105 +1,69 @@ -library(getopt) -library(rmarkdown) -library(htmltools) -library(dplyr) -library(DESeq2) -library(pheatmap) -library(DT) -library(ggplot2) - ##============ Sink warnings and errors to a file ============== ## use the sink() function to wrap all code within it. ##============================================================== zz = file('warnings_and_errors.txt') sink(zz) sink(zz, type = 'message') - ##---------below is the code for rendering .Rmd templates----- - - ##=============STEP 1: handle command line arguments========== - ## - ##============================================================ - # column 1: the long flag name - # column 2: the short flag alias. A SINGLE character string - # column 3: argument mask - # 0: no argument - # 1: argument required - # 2: argument is optional - # column 4: date type to which the flag's argument shall be cast. - # possible values: logical, integer, double, complex, character. - #------------------------------------------------------------- - #++++++++++++++++++++ Best practice ++++++++++++++++++++++++++ - # 1. short flag alias should match the flag in the command section in the XML file. - # 2. long flag name can be any legal R variable names - # 3. two names in args_list can have common string but one name should not be a part of another name. - # for example, one name is "ECHO", if another name is "ECHO_XXX", it will cause problems. - #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - args_list=list() - ##------- 1. input data --------------------- - args_list$ECHO = c('echo', 'e', '1', 'character') - args_list$DESEQ_WORKSPACE = c('deseq_workspace', 'W', '1', 'character') - args_list$CONTRAST_FACTOR = c('contrast_factor', 'C', '1', 'character') - args_list$TREATMENT_LEVEL = c('treatment_level', 'T', '1', 'character') - args_list$CONDITION_LEVEL = c('condition_level', 'K', '1', 'character') - args_list$CLUSTERING_FACTORS = c('clustering_factors', 'M', '1', 'character') - ##--------2. output report and outputs -------------- - args_list$REPORT_HTML = c('report_html', 'r', '1', 'character') - args_list$REPORT_DIR = c('report_dir', 'd', '1', 'character') - args_list$SINK_MESSAGE = c('sink_message', 's', '1', 'character') - args_list$DESEQ_RESULTS = c('deseq_results', 'R', '1', 'character') - ##--------3. .Rmd templates in the tool directory ---------- - args_list$deseq_results_RMD = c('deseq_results_rmd', 't', '1', 'character') - ##----------------------------------------------------------- - opt = getopt(t(as.data.frame(args_list))) + +#------------import libraries-------------------- +options(stringsAsFactors = FALSE) + +library(getopt) +library(rmarkdown) +library(DESeq2) +library(pheatmap) +library(DT) +library(ggplot2) +#------------------------------------------------ + + +#------------get arguments into R-------------------- +# getopt_specification_matrix(extract_short_flags('DESeq_results.xml')) %>% +# write.table(file = 'spec.txt', sep = ',', row.names = FALSE, col.names = TRUE, quote = FALSE) - - ##=======STEP 2: create report directory (optional)========== - ## - ##=========================================================== - dir.create(opt$report_dir) - - ##=STEP 3: replace placeholders in .Rmd with argument values= - ## - ##=========================================================== - #++ need to replace placeholders with args values one by one+ - readLines(opt$deseq_results_rmd) %>% - (function(x) { - gsub('ECHO', opt$echo, x) - }) %>% - (function(x) { - gsub('DESEQ_WORKSPACE', opt$deseq_workspace, x) - }) %>% - (function(x) { - gsub('CONTRAST_FACTOR', opt$contrast_factor, x) - }) %>% - (function(x) { - gsub('TREATMENT_LEVEL', opt$treatment_level, x) - }) %>% - (function(x) { - gsub('CONDITION_LEVEL', opt$condition_level, x) - }) %>% - (function(x) { - gsub('CLUSTERING_FACTORS', opt$clustering_factors, x) - }) %>% - (function(x) { - gsub('REPORT_DIR', opt$report_dir, x) - }) %>% - (function(x) { - gsub('DESEQ_RESULTS', opt$deseq_results, x) - }) %>% - (function(x) { - fileConn = file('deseq_results.Rmd') - writeLines(x, con=fileConn) - close(fileConn) - }) - - - ##=============STEP 4: render .Rmd templates================= - ## - ##=========================================================== - render('deseq_results.Rmd', output_file = opt$report_html) +spec_matrix = as.matrix( + data.frame(stringsAsFactors=FALSE, + long_flags = c("X_e", "X_W", "X_C", "X_T", "X_K", "X_M", "X_o", + "X_d", "X_s", "X_R", "X_t"), + short_flags = c("e", "W", "C", "T", "K", "M", "o", "d", "s", "R", + "t"), + argument_mask_flags = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), + data_type_flags = c("character", "character", "character", "character", + "character", "character", "character", + "character", "character", "character", "character") + ) +) +opt = getopt(spec_matrix) +opt +#---------------------------------------------------- - ##--------end of code rendering .Rmd templates---------------- +#-----------using passed arguments in R +# to define system environment variables--- +do.call(Sys.setenv, opt[-1]) +#---------------------------------------------------- + +#---------- often used variables ---------------- +# OUTPUT_DIR: path to the output associated directory, which stores all outputs +# TOOL_DIR: path to the tool installation directory +# RMD_NAME: name of Rmd file to be rendered +# OUTPUT_REPORT: path to galaxy output report +OUTPUT_DIR = opt$X_d +TOOL_DIR = opt$X_t +RMD_NAME = 'DESeq_results.Rmd' +OUTPUT_REPORT = opt$X_o + +# create the output associated directory to store all outputs +dir.create(OUTPUT_DIR, recursive = TRUE) + +#-----------------render Rmd-------------- +render(paste0(TOOL_DIR, '/', RMD_NAME), output_file = OUTPUT_REPORT) +#------------------------------------------ + +#==============the end============== + + +##--------end of code rendering .Rmd templates---------------- sink() ##=========== End of sinking output============================= \ No newline at end of file
