changeset 0:9755ce6ac4d5 draft

planemo upload for repository https://github.com/statonlab/docker-GRReport/tree/master/my_tools/rmarkdown_i_adhore commit b6ef011f29d6c75775be9cc0e0abe53e19981d1d-dirty
author mingchen0919
date Tue, 08 Aug 2017 12:53:57 -0400
parents
children fd719a0a6b26
files README.md i-adhore.xml i_adhore_configure.Rmd i_adhore_configure_render.R
diffstat 4 files changed, 276 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/README.md	Tue Aug 08 12:53:57 2017 -0400
@@ -0,0 +1,2 @@
+# i-adhore tool
+A galaxy tool for generating configuration file for i-adhore analysis.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/i-adhore.xml	Tue Aug 08 12:53:57 2017 -0400
@@ -0,0 +1,93 @@
+<tool id="i_adhore" name="i-adhore" version="0.1">
+	<requirement type="package" version="1.20.0">r-getopt</requirement>
+	<requirement type="package" version="1.2">r-rmarkdown</requirement>
+	<description>Generate i-adhore configure file</description>
+    <stdio>
+        <exit_code range="1:" />
+        <exit_code range=":-1" />
+        <regex match="Error:" />
+        <regex match="Exception:" />
+    </stdio>
+    <command><![CDATA[
+
+    	Rscript '${__tool_directory__}/i_adhore_configure_render.R'
+
+    		## 1. input data
+    		-e $echo
+
+			#set $g_analysis_files = ''
+			#for $g in $genomes
+				#if str($g.genome_name)
+					#set $analysis_files = []
+					#for $file in $g.analysis_files.to_dataset_instances($g.analysis_files)
+						#set $analysis_files += [$file.__str__]
+					#end for
+					#set g_analysis_files += str($g.genome_name) + ':' + ','.join($analysis_files) + ';'
+				#end if
+			#end for
+			-G '$g_analysis_files'
+
+    		-b $blast_table
+    		-g $gap_size
+    		-c $cluster_gap
+    		-q $q_value
+    		-p $prob_cutoff
+    		-a $anchor_points
+    		-m $alignment_method
+    		-l $level2only
+    		-T $table_type
+    		-h $multi_hypothesis_correction
+
+    		## 2. output report and file directory
+    		-x $i_adhore_configure_txt
+    		-o $i_adhore_configure
+    		-d $i_adhore_configure.files_path
+
+    		## 3. Rmd templates in the tool directory
+    		-t '${__tool_directory__}/i_adhore_configure.Rmd'
+
+
+    ]]></command>
+	<inputs>
+		<repeat name="genomes" title="genome" min="1">
+			<param name="genome_name" type="text" value="" label="Specify genome name" />
+			<param name="analysis_files" type="data" format="txt" multiple="true" label="analysis files (.lst or .txt files)" />
+		</repeat>
+		<param name="blast_table" type="data" format="csv" multiple="false" label="blast table (.csv file)" />
+		<param name="gap_size" type="text" value="30" label="gap size" />
+		<param name="cluster_gap" type="text" value="35" label="cluster gap" />
+		<param name="q_value" type="text" value="0.75" label="q value" />
+		<param name="prob_cutoff" type="text" value="0.01" label="probability cutoff" />
+		<param name="anchor_points" type="text" value="3" label="anchor_points" />
+		<param name="alignment_method" type="text" value="gg4" label="alignment method" />
+		<param name="level2only" type="boolean" truevalue="TRUE" falsevalue="FALSE" checked="false" label="level 2 only" />
+		<param name="table_type" type="text" value="family" label="table type" />
+		<param name="multi_hypothesis_correction" type="text" value="FDR" label="multiple hypothesis correction" />
+
+		<param type="boolean" name="echo" truevalue="TRUE" falsevalue="FALSE" checked="false" label="Display analysis code in report?" />
+	</inputs>
+	<outputs>
+		<data name="i_adhore_configure" format="html" label="i-adhore configure report" />
+		<data name="i_adhore_configure_txt" format="txt" label="i-adhore configure file" />
+	</outputs>
+	<citations>
+		<citation type="bibtex">
+			@article{allaire2016rmarkdown,
+			title={rmarkdown: Dynamic Documents for R, 2016},
+			author={Allaire, J and Cheng, Joe and Xie, Yihui and McPherson, Jonathan and Chang, Winston and Allen, Jeff and Wickham, Hadley and Atkins, Aron and Hyndman, Rob},
+			journal={R package version 0.9},
+			volume={6},
+			year={2016}
+			}
+		</citation>
+		<citation type="bibtex">
+			@book{xie2015dynamic,
+			title={Dynamic Documents with R and knitr},
+			author={Xie, Yihui},
+			volume={29},
+			year={2015},
+			publisher={CRC Press}
+			}
+		</citation>
+	</citations>
+</tool>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/i_adhore_configure.Rmd	Tue Aug 08 12:53:57 2017 -0400
@@ -0,0 +1,79 @@
+---
+title: 'i-adhore: generate i-adhore config file'
+output:
+    html_document:
+      number_sections: true
+      toc: true
+      theme: cosmo
+      highlight: tango
+---
+
+```{r setup, include=FALSE, warning=FALSE, message=FALSE}
+knitr::opts_chunk$set(echo = ECHO)
+```
+
+# Genomes and analysis files
+
+```{r}
+g_analysis_files_set = strsplit(opt$g_analysis_file, ';')[[1]]
+g_analysis_files_list = list()
+# for(i in g_analysis_files_set) {
+#   genome = strsplit(i, ':')[[1]][1]
+#   analysis_files = strsplit(i, ':')[[1]][2] %>% 
+#                       strsplit(',') %>% `[[`(1) %>% 
+#                       (function(x){
+#                         paste0(1:length(x),' ', x)
+#                       })
+#   g_analysis_files_list[[genome]] = analysis_files
+# }
+for(i in g_analysis_files_set) {
+  genome = strsplit(i, ':')[[1]][1]
+  analysis_files = strsplit(i, ':')[[1]][2] %>% 
+                      strsplit(',') %>% `[[`(1) %>% 
+                      laply(.fun = function(x){
+                        file_name = strsplit(x, '/')[[1]] %>% tail(1)
+                        file_name = strsplit(file_name, '\\.')[[1]][1]
+                        paste0(file_name, ' ', x)
+                      })
+  g_analysis_files_list[[genome]] = c(
+    'name' = paste0('genome=', strsplit(i, ':')[[1]][1]),
+    'analysis_files' = analysis_files
+  )
+  print(paste0('genome=', strsplit(i, ':')[[1]][1]))
+  print(analysis_files)
+}
+```
+
+# Other parameters
+
+```{r}
+params = c(
+  'blast table' = opt$blast_table,
+  'output_path' = opt$i_adhore_configure_dir,
+  'gap_size' = opt$gap_size,
+  'cluster_gap' = opt$cluster_gap,
+  'q_value' = opt$q_value,
+  'prob_cutoff' = opt$prob_cutoff,
+  'anchor_points' = opt$anchor_points,
+  'level_2_only' = opt$level2only,
+  'table_type' = opt$table_type,
+  'multi_hypothesis_correction' = opt$multi_hypothesis_correction
+)
+
+df = data.frame(name = names(params),
+                value = params)
+knitr::kable(df)
+```
+
+
+```{r echo=FALSE}
+# generate i_adhore_configure.txt file
+lines = c(unlist(g_analysis_files_list), 
+          ' ', 
+          paste0(df$name, '=', df$value), 
+          'CompareAligners')
+fileConn = file('I_ADHORE_CONFIGURE_TXT')
+writeLines(lines, con = fileConn)
+```
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/i_adhore_configure_render.R	Tue Aug 08 12:53:57 2017 -0400
@@ -0,0 +1,102 @@
+
+##======= Handle arguments from command line ========
+# setup R error handline to go to stderr
+options(show.error.messages=FALSE,
+error=function(){
+    cat(geterrmessage(), file=stderr())
+    quit("no", 1, F)
+})
+
+# we need that to not crash galaxy with an UTF8 error on German LC settings.
+loc = Sys.setlocale("LC_MESSAGES", "en_US.UTF-8")
+
+# suppress warning
+options(warn = -1)
+
+options(stringsAsFactors=FALSE, useFancyQuotes=FALSE)
+args = commandArgs(trailingOnly=TRUE)
+
+suppressPackageStartupMessages({
+    library(getopt)
+    library(tools)
+})
+
+# 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.
+spec_list=list()
+
+
+##------- 1. input data ---------------------
+spec_list$ECHO = c('echo', 'e', '1', 'character')
+spec_list$G_ANALYSIS_FILES = c('g_analysis_files', 'G', '1', 'character')
+spec_list$BLAST_TABLE = c('blast_table', 'b', '1', 'character')
+spec_list$GAP_SIZE = c('gap_size', 'g', '1', 'character')
+spec_list$CLUSTER_GAP = c('cluster_gap', 'c', '1', 'character')
+spec_list$Q_VALUE = c('q_value', 'q', '1', 'character')
+spec_list$PROB_CUTOFF = c('prob_cutoff', 'p', '1', 'character')
+spec_list$ANCHOR_POINTS = c('anchor_points', 'a', '1', 'character')
+spec_list$ALIGNMENT_METHOD = c('alignment_method', 'm', '1', 'character')
+spec_list$LEVEL2ONLY = c('level2only', 'l', '1', 'character')
+spec_list$TABLE_TYPE = c('table_type', 'T', '1', 'character')
+spec_list$MULTI_HYPOTHESIS_CORRECTION = c('multi_hypothesis_correction', 'h', '1', 'character')
+
+
+##--------2. output report and report site directory --------------
+spec_list$I_ADHORE_CONFIGURE_TXT = c('i_adhore_configure_txt', 'x', '1', 'character')
+spec_list$OUTPUT_HTML = c('i_adhore_configure_html', 'o', '1', 'character')
+spec_list$OUTPUT_DIR = c('i_adhore_configure_dir', 'd', '1', 'character')
+
+
+##--------3. Rmd templates sitting in the tool directory ----------
+spec_list$I_ADHORE_CONFIGURE_RMD = c('i_adhore_configure_rmd', '-t', '1', 'character')
+
+
+spec = t(as.data.frame(spec_list))
+opt = getopt(spec)
+# arguments are accessed by long flag name (the first column in the spec matrix)
+#                        NOT by element name in the spec_list
+# example: opt$help, opt$expression_file
+##====== End of arguments handling ==========
+
+#------ Load libraries ---------
+library(rmarkdown)
+library(plyr)
+library(dplyr)
+
+
+#----- 1. create the report directory ------------------------
+system(paste0('mkdir -p ', opt$i_adhore_configure_dir))
+# set working directory to output files directory
+setwd(opt$i_adhore_configure_dir)
+
+
+#----- 2. generate Rmd files with Rmd templates --------------
+#   a. templates without placeholder variables:
+#         copy templates from tool directory to the working directory.
+#   b. templates with placeholder variables:
+#         substitute variables with user input values and place them in the working directory.
+
+
+#----- 01 i_adhore_configure.Rmd -----------------------
+readLines(opt$i_adhore_configure_rmd) %>%
+    (function(x) {
+        gsub('ECHO', opt$echo, x)
+    }) %>%
+    (function(x) {
+        gsub('I_ADHORE_CONFIGURE_TXT', opt$i_adhore_configure_txt, x)
+    }) %>%
+    (function(x) {
+        fileConn = file('i_adhore_configure.Rmd')
+        writeLines(x, con=fileConn)
+        close(fileConn)
+    })
+
+
+#------ 3. render all Rmd files --------
+render('i_adhore_configure.Rmd', output_file = opt$i_adhore_configure_html)