# HG changeset patch
# User mingchen0919
# Date 1514405983 18000
# Node ID 77e8e7bc5b44f42c139696d38e4c87351d3a7c5f
# Parent c5c62665359355889612454eaaed4980bfda97a6
update
diff -r c5c626653593 -r 77e8e7bc5b44 rmarkdown_flagstat.Rmd
--- a/rmarkdown_flagstat.Rmd Tue Dec 26 20:42:47 2017 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
----
-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)
-```
-
-
diff -r c5c626653593 -r 77e8e7bc5b44 rmarkdown_flagstat.xml
--- a/rmarkdown_flagstat.xml Tue Dec 26 20:42:47 2017 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +0,0 @@
-
-
- pandoc
- r-getopt
- r-rmarkdown
- r-htmltools
- r-dplyr
- samtools
-
- Descriptive stats for BAM dataset
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff -r c5c626653593 -r 77e8e7bc5b44 rmarkdown_flagstat_render.R
--- a/rmarkdown_flagstat_render.R Tue Dec 26 20:42:47 2017 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,77 +0,0 @@
-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=============================
diff -r c5c626653593 -r 77e8e7bc5b44 rmarkdown_samtools_flagstat.Rmd
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/rmarkdown_samtools_flagstat.Rmd Wed Dec 27 15:19:43 2017 -0500
@@ -0,0 +1,32 @@
+---
+title: 'Reads alignment stats'
+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,
+ error = TRUE
+)
+```
+
+
+# Reads alignment stats on `r opt$input_bam_name`
+
+```{r 'flagstat'}
+command = paste0('samtools flagstat ', opt$input_bam, ' > ', paste0(opt$report_dir, '/report.txt'))
+system(command)
+df = readLines(paste0(opt$report_dir, '/report.txt')) %>%
+ str_replace('(\\d+\\s+\\+\\s+\\d+)\\s+', '\\1,') %>%
+ str_split(',') %>%
+ as.data.frame() %>% t()
+rownames(df) = NULL
+colnames(df) = c('PASS + FAIL', 'Description')
+knitr::kable(df)
+```
+
diff -r c5c626653593 -r 77e8e7bc5b44 rmarkdown_samtools_flagstat.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/rmarkdown_samtools_flagstat.xml Wed Dec 27 15:19:43 2017 -0500
@@ -0,0 +1,55 @@
+
+
+ pandoc
+ r-getopt
+ r-rmarkdown
+ r-htmltools
+ r-dplyr
+ samtools
+
+ simple stats on BAM file
+
+
+
+
+
+
+
+
+
+
+
+
+ samtools flagstat in.sam|in.bam|in.cram
+
+Does a full pass through the input file to calculate and print statistics to stdout]]>
+
+
+
+
+
diff -r c5c626653593 -r 77e8e7bc5b44 rmarkdown_samtools_flagstat_render.R
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/rmarkdown_samtools_flagstat_render.R Wed Dec 27 15:19:43 2017 -0500
@@ -0,0 +1,80 @@
+library(getopt)
+library(rmarkdown)
+library(htmltools)
+library(dplyr)
+library(stringr)
+
+##============ 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$INPUT_BAM = c('input_bam', 'b', '1', 'character')
+ args_list$INPUT_BAM_NAME = c('input_bam_name', 'n', '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$report_dir, x)
+ }) %>%
+ (function(x) {
+ fileConn = file('rmarkdown_samtools_flagstat.Rmd')
+ writeLines(x, con=fileConn)
+ close(fileConn)
+ })
+
+
+ ##=============STEP 4: render .Rmd templates=================
+ ##
+ ##===========================================================
+ render('rmarkdown_samtools_flagstat.Rmd', output_file = opt$report_html)
+
+
+ ##--------end of code rendering .Rmd templates----------------
+sink()
+##=========== End of sinking output=============================