changeset 0:ba913054bbff draft

planemo upload
author mingchen0919
date Tue, 26 Dec 2017 19:27:41 -0500
parents
children c5c626653593
files rmarkdown_flagstat.Rmd rmarkdown_flagstat.xml rmarkdown_flagstat_render.R
diffstat 3 files changed, 155 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rmarkdown_flagstat.Rmd	Tue Dec 26 19:27:41 2017 -0500
@@ -0,0 +1,25 @@
+---
+title: 'samtools flagstat'
+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
+)
+```
+
+
+# Code for computational analysis
+
+```{r 'run flagstat'}
+command = paste0('samtools flagstat ', opt$input_bam, ' > report.txt')
+system(command)
+```
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rmarkdown_flagstat.xml	Tue Dec 26 19:27:41 2017 -0500
@@ -0,0 +1,53 @@
+<tool id="rmarkdown_flagstat" name="Flagstat" version="1.0.0">
+  <requirements>
+    <requirement type="package" version="1.15.0.6-0">pandoc</requirement>
+    <requirement type="package" version="1.20.0">r-getopt</requirement>
+    <requirement type="package" version="1.3">r-rmarkdown</requirement>
+    <requirement type="package" version="0.3.5">r-htmltools</requirement>
+    <requirement type="package" version="0.5.0">r-dplyr</requirement>
+    <requirement type="package" version="1.4.1">samtools</requirement>
+  </requirements>
+  <description>Descriptive stats for BAM dataset</description>
+  <stdio>
+    <regex source="stderr" match="XXX" level="warning" description="Check the warnings_and_errors.txt file for more details."/>
+  </stdio>
+  <command><![CDATA[
+                    Rscript '${__tool_directory__}/tool_template_render.R'
+                        -e $echo
+                        -r $report
+                        -d $report.files_path
+                        -s $sink_message
+                        -t '${__tool_directory__}/tool_template.Rmd
+                    ]]></command>
+  <inputs>
+    <param type="integer" name="echo" label="Display analysis code in report?" optional="False" checked="False" truevalue="TRUE" falsevalue="FALSE"/>
+    <param type="data" name="input_bam" label="BAM file" optional="False" format="bam"/>
+  </inputs>
+  <outputs>
+    <data name="report" format="html" label="tool name report" hidden="false"/>
+    <data name="sink_message" format="txt" label="Warnings and Errors" from_work_dir="warnings_and_errors.txt" hidden="false"/>
+  </outputs>
+  <help><![CDATA[Provides counts for each of 13 categories based primarily on bit flags in the FLAG field. Each category in the output is broken down into QC pass and QC fail, which is presented as "#PASS + #FAIL" followed by a description of the category.]]></help>
+  <citations>
+    <citation><![CDATA[
+                    @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"><![CDATA[
+@article{li2009sequence,
+  title={The sequence alignment/map format and SAMtools},
+  author={Li, Heng and Handsaker, Bob and Wysoker, Alec and Fennell, Tim and Ruan, Jue and Homer, Nils and Marth, Gabor and Abecasis, Goncalo and Durbin, Richard},
+  journal={Bioinformatics},
+  volume={25},
+  number={16},
+  pages={2078--2079},
+  year={2009},
+  publisher={Oxford University Press}
+}]]></citation>
+  </citations>
+</tool>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rmarkdown_flagstat_render.R	Tue Dec 26 19:27:41 2017 -0500
@@ -0,0 +1,77 @@
+library(getopt)
+library(rmarkdown)
+library(htmltools)
+library(dplyr)
+
+##============ 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')
+  ##--------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')
+  ##--------3. .Rmd templates in the tool directory ----------
+  args_list$TOOL_TEMPLATE_RMD = c('tool_template_rmd', 't', '1', 'character')
+  ##-----------------------------------------------------------
+  opt = getopt(t(as.data.frame(args_list)))
+
+
+  
+  ##=======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$tool_template_rmd) %>%
+    (function(x) {
+      gsub('ECHO', opt$echo, x)
+    }) %>%
+    (function(x) {
+      gsub('REPORT_DIR', opt$output_dir, x)
+    }) %>%
+    (function(x) {
+      fileConn = file('tool_template.Rmd')
+      writeLines(x, con=fileConn)
+      close(fileConn)
+    })
+  
+
+  ##=============STEP 4: render .Rmd templates=================
+  ##
+  ##===========================================================
+  render('tool_template.Rmd', output_file = opt$report_html)
+
+
+  ##--------end of code rendering .Rmd templates----------------
+sink()
+##=========== End of sinking output=============================