diff --git a/workflow/main.nf b/workflow/main.nf index a0713ee9cba010a5e0ff49bcdfdfab925584af1c..8651f6d5723fa46c0a39169704ca42ac19b6b046 100644 --- a/workflow/main.nf +++ b/workflow/main.nf @@ -483,17 +483,17 @@ process softwareReport { input: - trimReadsVersions - alignReadsVersions - filterReadsVersions - convertReadsVersions - crossReadsVersions - callPeaksMACSVersions - consensusPeaksVersions - peakAnnotationVersions - motifSearchVersions - diffPeaksVersions - experimentQCVersions + trimReadsVersions.collect() + alignReadsVersions.collect() + filterReadsVersions.collect() + convertReadsVersions.collect() + crossReadsVersions.collect() + callPeaksMACSVersions.collect() + consensusPeaksVersions.collect() + peakAnnotationVersions.collect() + motifSearchVersions.collect() + diffPeaksVersions.collect() + experimentQCVersions.collect() output: @@ -502,7 +502,7 @@ process softwareReport { script: """ - python3 $baseDir/scripts/generate_versions.py -o software_versions + python3 $baseDir/scripts/generate_versions.py -f *.txt -o software_versions python3 $baseDir/scripts/generate_references.py -r $references -o software_references """ } diff --git a/workflow/scripts/generate_versions.py b/workflow/scripts/generate_versions.py index 2823bcef1518ed511a68faf215b818a65f14f7a1..f75a3433098775335fd6654554b0cffc7b7e4be6 100644 --- a/workflow/scripts/generate_versions.py +++ b/workflow/scripts/generate_versions.py @@ -8,6 +8,7 @@ from collections import OrderedDict import re import logging import argparse +import numpy as np EPILOG = ''' For more details: @@ -46,6 +47,11 @@ 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) @@ -54,8 +60,29 @@ def get_args(): return args +def check_files(files): + '''Check if version files are found.''' + + logger.info("Running file check.") + + software_files = np.array(list(SOFTWARE_REGEX.values()))[:,0] + + missing_files = set(software_files) - set(files) + + if len(missing_files) > 0: + logger.error('Missing version files: %s', list(missing_files)) + raise Exception("Missing version files: %s" % list(missing_files)) + + extra_files = set(files) - set(software_files) + + if len(extra_files) > 0: + 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 out_filename = output + '_mqc.yaml' @@ -79,6 +106,9 @@ def main(): results['DiffBind'] = '<span style="color:#999999;\">N/A</span>' results['deepTools'] = '<span style="color:#999999;\">N/A</span>' + # Check for version files: + check_files(files) + # Search each file using its regex for k, v in SOFTWARE_REGEX.items(): with open(v[0]) as x: