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