class: CommandLineTool cwlVersion: v1.1 $namespaces: sbg: 'https://www.sevenbridges.com/' id: check_unflagged_fraction baseCommand: - python3 - check_fraction.py inputs: - id: msin type: Directory doc: MS to check inputBinding: position: 0 - id: min_fraction type: float? default: 0.5 doc: Fraction of flagged data in a MS to be acceptable requirements: - class: InlineJavascriptRequirement - class: InitialWorkDirRequirement listing: - entry: $(inputs.msin) writable: true - entryname: check_fraction.py entry: | import sys import json import shutil import os from check_unflagged_fraction import main as check_unflagged_fraction ms = sys.argv[1] inputs = json.loads(r"""$(inputs)""") min_fraction = inputs['min_fraction'] output = check_unflagged_fraction(ms, min_fraction=min_fraction, print_fraction=True) filename = os.path.basename(output['filename'].rstrip('/')) unflagged_fraction = output['unflagged_fraction'] flagged = output['flagged'] cwl_output = {} cwl_output['unflagged_fraction'] = unflagged_fraction if flagged != 'None': shutil.move(filename, filename.lstrip('out_')) cwl_output['filename'] = 'None' else: cwl_output['filename'] = filename with open('./out.json', 'w') as fp: json.dump(cwl_output, fp) outputs: - id: msout type: Directory[] outputBinding: glob: 'L*.dpppconcat' - id: unflagged_fraction type: float outputBinding: loadContents: true glob: 'out.json' outputEval: $(JSON.parse(self[0].contents).unflagged_fraction) - id: filenames type: string outputBinding: loadContents: true glob: 'out.json' outputEval: $(JSON.parse(self[0].contents).filename) - id: logfile type: File[] outputBinding: glob: 'check_unflagged_fraction*.log' hints: - class: DockerRequirement dockerPull: lofareosc/prefactor3-cwl stdout: check_unflagged_fraction.log stderr: check_unflagged_fraction_err.log