From 3085339385a14eeddb0bb4e5ebb236a4ab494e41 Mon Sep 17 00:00:00 2001
From: Venkat Malladi <venkat.malladi@utsouthwestern.edu>
Date: Mon, 11 Mar 2019 17:43:41 -0500
Subject: [PATCH] Update software report and generate references.

---
 workflow/main.nf                        |  4 +-
 workflow/scripts/generate_references.py | 66 +++++++++++++++++++++++++
 workflow/scripts/software_report.py     |  1 +
 3 files changed, 70 insertions(+), 1 deletion(-)
 create mode 100644 workflow/scripts/generate_references.py

diff --git a/workflow/main.nf b/workflow/main.nf
index ddeb067..ceed1c1 100644
--- a/workflow/main.nf
+++ b/workflow/main.nf
@@ -17,6 +17,8 @@ params.cutoffRatio = 1.2
 params.outDir= "$baseDir/output"
 params.extendReadsLen = 100
 params.topPeakCount = 600
+params.references = "$baseDir/../docs/references.md"
+
 
 // Check inputs
 if( params.bwaIndex ){
@@ -475,7 +477,7 @@ process diffPeaks {
   """
 }
 
-// Collect Software Versions
+// Collect Software Versions and references
 process softwareVersions {
 
   input:
diff --git a/workflow/scripts/generate_references.py b/workflow/scripts/generate_references.py
new file mode 100644
index 0000000..0b7582f
--- /dev/null
+++ b/workflow/scripts/generate_references.py
@@ -0,0 +1,66 @@
+#!/usr/bin/env python
+
+'''Make header for HTML of references.'''
+
+import argparse
+import subprocess
+import shlex
+import logging
+
+EPILOG = '''
+For more details:
+        %(prog)s --help
+'''
+
+# SETTINGS
+
+logger = logging.getLogger(__name__)
+logger.addHandler(logging.NullHandler())
+logger.propagate = False
+logger.setLevel(logging.INFO)
+
+
+def get_args():
+    '''Define arguments.'''
+
+    parser = argparse.ArgumentParser(
+        description=__doc__, epilog=EPILOG,
+        formatter_class=argparse.RawDescriptionHelpFormatter)
+
+    parser.add_argument('-r', '--reference',
+                        help="The reference file (markdown format).",
+                        required=True)
+
+    parser.add_argument('-o', '--output',
+                        help="The out file name.",
+                        default='references')
+
+    args = parser.parse_args()
+    return args
+
+
+def main():
+    args = get_args()
+    reference = args.reference
+    output = args.output
+
+    out_filename = output + '_mqc.txt'
+
+    # Header for HTML
+    print('''
+        # id: 'References'
+        # section_name: 'References'
+        # description: 'This section describes references for the tools used.'
+        # plot_type: 'html'
+        '''
+    , file = open(out_filename, "w")
+    )
+
+    # Turn Markdown into HTML
+    references_html = 'bash -c "pandoc {} >> {}"'
+    references_html = references_html.format(reference, out_filename)
+    subprocess.check_call(shlex.split(references_html))
+
+
+if __name__ == '__main__':
+    main()
diff --git a/workflow/scripts/software_report.py b/workflow/scripts/software_report.py
index 2e605e3..5f9abe1 100644
--- a/workflow/scripts/software_report.py
+++ b/workflow/scripts/software_report.py
@@ -7,6 +7,7 @@ from __future__ import print_function
 from collections import OrderedDict
 import re
 
+
 software_regex = {
     'Trim Galore!': ['version_trimgalore.txt', r"version (\S+)"],
     'Cutadapt': ['version_cutadapt.txt', r"Version (\S+)"],
-- 
GitLab