diff --git a/workflow/main.nf b/workflow/main.nf index 531ec7eeb3c305cd626e8c0d4266592c98b07206..61d27454b9a8172a74872a7df0291832a0c4d0d0 100644 --- a/workflow/main.nf +++ b/workflow/main.nf @@ -509,12 +509,11 @@ process softwareReport { file('software_references_mqc.yaml') into softwareReferences script: + """ echo $workflow.nextflow.version > version_nextflow.txt python3 $baseDir/scripts/generate_references.py -r $references -o software_references - python3 $baseDir/scripts/generate_versions.py -f version*txt \ - version_nextflow.txt \ - -o software_versions + python3 $baseDir/scripts/generate_versions.py -o software_versions """ } diff --git a/workflow/scripts/generate_versions.py b/workflow/scripts/generate_versions.py index b783f14930180adafe15e80a0c8a6c0bd501f152..48f8258f686c7f5c3dcca294bc94617eb3e75ae1 100644 --- a/workflow/scripts/generate_versions.py +++ b/workflow/scripts/generate_versions.py @@ -6,7 +6,9 @@ from __future__ import print_function from collections import OrderedDict import re +import os import logging +import glob import argparse import numpy as np @@ -27,7 +29,7 @@ SOFTWARE_REGEX = { 'Trim Galore!': ['trimReads_vf/version_trimgalore.txt', r"version (\S+)"], 'Cutadapt': ['trimReads_vf/version_cutadapt.txt', r"Version (\S+)"], 'BWA': ['alignReads_vf/version_bwa.txt', r"Version: (\S+)"], - 'Samtools': ['filterReads_vf/alignReads_vf/version_samtools.txt', r"samtools (\S+)"], + 'Samtools': ['alignReads_vf/version_samtools.txt', r"samtools (\S+)"], 'Sambamba': ['filterReads_vf/version_sambamba.txt', r"sambamba (\S+)"], 'BEDTools': ['convertReads_vf/version_bedtools.txt', r"bedtools v(\S+)"], 'R': ['crossReads_vf/version_r.txt', r"R version (\S+)"], @@ -48,20 +50,20 @@ def get_args(): description=__doc__, epilog=EPILOG, formatter_class=argparse.RawDescriptionHelpFormatter) - parser.add_argument('-f', '--files', - help="The version files.", - required=True, - nargs='*') - parser.add_argument('-o', '--output', help="The out file name.", required=True) + parser.add_argument('-t', '--test', + help='Used for testing purposes', + default=False, + action='store_true') + args = parser.parse_args() return args -def check_files(files): +def check_files(files, test): '''Check if version files are found.''' logger.info("Running file check.") @@ -70,48 +72,49 @@ def check_files(files): extra_files = set(files) - set(software_files) - if len(extra_files) > 0: + if len(extra_files) > 0 and test: logger.error('Missing regex: %s', list(extra_files)) raise Exception("Missing regex: %s" % list(extra_files)) def main(): args = get_args() - files = args.files output = args.output + test = args.test out_filename = output + '_mqc.yaml' results = OrderedDict() - results['Nextflow'] = '<span style="color:#999999;\">N/A</span>' - results['Trim Galore!'] = '<span style="color:#999999;\">N/A</span>' - results['Cutadapt'] = '<span style="color:#999999;\">N/A</span>' - results['BWA'] = '<span style="color:#999999;\">N/A</span>' - results['Trim Galore!'] = '<span style="color:#999999;\">N/A</span>' - results['Cutadapt'] = '<span style="color:#999999;\">N/A</span>' - results['BWA'] = '<span style="color:#999999;\">N/A</span>' - results['Samtools'] = '<span style="color:#999999;\">N/A</span>' - results['Sambamba'] = '<span style="color:#999999;\">N/A</span>' - results['BEDTools'] = '<span style="color:#999999;\">N/A</span>' - results['R'] = '<span style="color:#999999;\">N/A</span>' - results['SPP'] = '<span style="color:#999999;\">N/A</span>' - results['MACS2'] = '<span style="color:#999999;\">N/A</span>' - results['bedGraphToBigWig'] = '<span style="color:#999999;\">N/A</span>' - results['ChIPseeker'] = '<span style="color:#999999;\">N/A</span>' - results['MEME-ChIP'] = '<span style="color:#999999;\">N/A</span>' - results['DiffBind'] = '<span style="color:#999999;\">N/A</span>' - results['deepTools'] = '<span style="color:#999999;\">N/A</span>' + results['Nextflow'] = '<span style="color:#999999;\">Not Run</span>' + results['Trim Galore!'] = '<span style="color:#999999;\">Not Run</span>' + results['Cutadapt'] = '<span style="color:#999999;\">Not Run</span>' + results['BWA'] = '<span style="color:#999999;\">Not Run</span>' + results['Samtools'] = '<span style="color:#999999;\">Not Run</span>' + results['Sambamba'] = '<span style="color:#999999;\">Not Run</span>' + results['BEDTools'] = '<span style="color:#999999;\">Not Run</span>' + results['R'] = '<span style="color:#999999;\">Not Run</span>' + results['SPP'] = '<span style="color:#999999;\">Not Run</span>' + results['MACS2'] = '<span style="color:#999999;\">Not Run</span>' + results['bedGraphToBigWig'] = '<span style="color:#999999;\">Not Run</span>' + results['ChIPseeker'] = '<span style="color:#999999;\">Not Run</span>' + results['MEME-ChIP'] = '<span style="color:#999999;\">Not Run</span>' + results['DiffBind'] = '<span style="color:#999999;\">Not Run</span>' + results['deepTools'] = '<span style="color:#999999;\">Not Run</span>' + + # list all files + files = glob.glob('**/*.txt', recursive=True) # Check for version files: - check_files(files) + check_files(files, test) # Search each file using its regex for k, v in SOFTWARE_REGEX.items(): - with open(v[0]) as x: - versions = x.read() - match = re.search(v[1], versions) - if match: - results[k] = "v{}".format(match.group(1)) + if os.path.isfile(v[0]): + with open(v[0]) as x: + versions = x.read() + match = re.search(v[1], versions) + if match: + results[k] = "v{}".format(match.group(1)) # Dump to YAML print(