Skip to content
Snippets Groups Projects
Commit 2b7fc297 authored by Marcel Loose's avatar Marcel Loose :sunglasses:
Browse files

Fix the mapping between CWL inputs, which are in JSON format, and Python...

Fix the mapping between CWL inputs, which are in JSON format, and Python types, for CWL steps that contain inline Python script.

The solution is to convert the CWL `$(inputs)` once to a Python `dict`, by using the `json.loads()` function, passing the `$(inputs)` as a raw Python string. Next, any input argument can be accessed as an entry in a Python `dict`.

Also, to avoid potential "Argument list too long" errors, all inline Python scripts that expand the `$(inputs)` argument are now automatically turned into a script *file*, instead of being passed as a (potentially huge) string on the command line.


Former-commit-id: 250aa9d1
parent 7c8ff63f
No related branches found
No related tags found
No related merge requests found
...@@ -4,51 +4,51 @@ cwlVersion: v1.1 ...@@ -4,51 +4,51 @@ cwlVersion: v1.1
class: CommandLineTool class: CommandLineTool
id: generic_step id: generic_step
requirements:
- class: InlineJavascriptRequirement
baseCommand: baseCommand:
- python3 - python3
- generic_step.py
arguments: requirements:
- prefix: -c - class: InlineJavascriptRequirement
valueFrom: | - class: InitialWorkDirRequirement
import sys listing:
- entryname: generic_step.py
true = True entry: |
false = False import sys
null = None import json
steps_list = $(inputs.steps)
steps_id_list = list(map(lambda item: item['step_id'], steps_list)) inputs = json.loads(r"""$(inputs)""")
steps_list = inputs['steps'] if inputs['steps'] else []
for step in steps_list: steps_id_list = list(map(lambda item: item['step_id'], steps_list))
try:
step_id = step.get('step_id') for step in steps_list:
step_type = step.get('step_type') try:
parameters = step.get('parameters') step_id = step.get('step_id')
step_type = step.get('step_type')
parameters = step.get('parameters')
line = '.'.join([step_id, 'type'])
line += '=%s' % step_type
print(line) line = '.'.join([step_id, 'type'])
line += '=%s' % step_type
for parameter_name, parameter in parameters.items(): print(line)
if isinstance(parameter, dict):
if parameter['class'] in ['File', 'Directory']: for parameter_name, parameter in parameters.items():
parameter = parameter['basename'] if isinstance(parameter, dict):
else: if parameter['class'] in ['File', 'Directory']:
raise NotImplemented() parameter = parameter['basename']
if parameter is None: else:
continue raise NotImplemented()
line = '.'.join([step_id, parameter_name]) if parameter is None:
line = '%s=%s' % (line, parameter) continue
line = '.'.join([step_id, parameter_name])
print(line) line = '%s=%s' % (line, parameter)
except KeyError as e:
print('invalid input for step ', step, ':', e) print(line)
sys.exit(1) except KeyError as e:
last_step_line = 'steps=[%s,count]' % ', '.join(steps_id_list) print('invalid input for step ', step, ':', e)
print(last_step_line) sys.exit(1)
last_step_line = 'steps=[%s,count]' % ', '.join(steps_id_list)
print(last_step_line)
inputs: inputs:
- id: steps - id: steps
type: Any[]? type: Any[]?
......
...@@ -15,15 +15,18 @@ requirements: ...@@ -15,15 +15,18 @@ requirements:
- entryname: "replicate_axis.py" - entryname: "replicate_axis.py"
entry: | entry: |
import sys import sys
import json
from losoto.h5parm import openSoltab from losoto.h5parm import openSoltab
from losoto.operations import replicateonaxis from losoto.operations import replicateonaxis
soltab_address = "$(inputs.soltab)" inputs = json.loads(r"""$(inputs)""")
soltab_address = inputs['soltab']
soltab = openSoltab(sys.argv[1], address=soltab_address) soltab = openSoltab(sys.argv[1], address=soltab_address)
axisReplicate = "$(inputs.axisReplicate)" axisReplicate = inputs['axisReplicate']
fromCell = "$(inputs.fromCell !== null ? inputs.fromCell : 0)" fromCell = inputs['fromCell'] if inputs['fromCell'] else 0
updateWeights = "$(inputs.updateWeights? inputs.updateWeights : 'True')" updateWeights = inputs['updateWeights']
replicateonaxis.run(soltab, axisReplicate=axisReplicate, replicateonaxis.run(soltab, axisReplicate=axisReplicate,
fromCell=fromCell, fromCell=fromCell,
......
...@@ -5,6 +5,7 @@ $namespaces: ...@@ -5,6 +5,7 @@ $namespaces:
id: check_unflagged_fraction id: check_unflagged_fraction
baseCommand: baseCommand:
- python3 - python3
- check_fraction.py
inputs: inputs:
- id: msin - id: msin
type: Directory type: Directory
...@@ -15,35 +16,39 @@ inputs: ...@@ -15,35 +16,39 @@ inputs:
type: float? type: float?
default: 0.5 default: 0.5
doc: Fraction of flagged data in a MS to be acceptable 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']
label: check_unflagged_fraction output = check_unflagged_fraction(ms, min_fraction=min_fraction, print_fraction=True)
arguments:
- '-c'
- |
import sys
import json
import shutil
import os
from check_unflagged_fraction import main as check_unflagged_fraction filename = os.path.basename(output['flagged'])
unflagged_fraction = output['unflagged_fraction']
ms = sys.argv[1] if filename != 'None':
min_fraction = float($(inputs.min_fraction)) shutil.move(filename, filename.lstrip('out_'))
output = check_unflagged_fraction(ms, min_fraction=min_fraction, print_fraction=True)
filename = os.path.basename(output['flagged']) cwl_output = {}
unflagged_fraction = output['unflagged_fraction'] cwl_output['unflagged_fraction'] = unflagged_fraction
if filename != 'None': with open('./out.json', 'w') as fp:
shutil.move(filename, filename.lstrip('out_')) json.dump(cwl_output, fp)
cwl_output = {}
cwl_output['unflagged_fraction'] = unflagged_fraction
with open('./out.json', 'w') as fp:
json.dump(cwl_output, fp)
outputs: outputs:
- id: msout - id: msout
type: Directory[] type: Directory[]
...@@ -59,16 +64,8 @@ outputs: ...@@ -59,16 +64,8 @@ outputs:
type: File[] type: File[]
outputBinding: outputBinding:
glob: 'check_unflagged_fraction*.log' glob: 'check_unflagged_fraction*.log'
requirements:
- class: InlineJavascriptRequirement
- class: InitialWorkDirRequirement
listing:
- entry: $(inputs.msin)
writable: true
hints: hints:
- class: DockerRequirement - class: DockerRequirement
dockerPull: lofareosc/prefactor3-cwl dockerPull: lofareosc/prefactor3-cwl
stdout: check_unflagged_fraction.log stdout: check_unflagged_fraction.log
stderr: check_unflagged_fraction_err.log stderr: check_unflagged_fraction_err.log
\ No newline at end of file
...@@ -5,6 +5,7 @@ $namespaces: ...@@ -5,6 +5,7 @@ $namespaces:
id: compare_station_list id: compare_station_list
baseCommand: baseCommand:
- python3 - python3
- script.py
inputs: inputs:
- id: msin - id: msin
type: Directory[] type: Directory[]
...@@ -22,27 +23,29 @@ inputs: ...@@ -22,27 +23,29 @@ inputs:
type: string? type: string?
default: '*&' default: '*&'
doc: Filter these baselines for the comparison doc: Filter these baselines for the comparison
requirements:
- class: InlineJavascriptRequirement
- class: InitialWorkDirRequirement
listing:
- entryname: script.py
entry: |
import sys
import json
from compareStationList import main as compareStationList
label: compareStationList.py mss = sys.argv[1:]
arguments: inputs = json.loads(r"""$(inputs)""")
- '-c' h5parmdb = inputs['h5parmdb']['path']
- | solset_name = inputs['solset_name']
import sys filter = inputs['filter']
import json
from compareStationList import main as compareStationList
mss = sys.argv[1:]
h5parmdb = $(inputs.h5parmdb)['path']
solset_name = '$(inputs.solset_name)'
filter = '$(inputs.filter)'
output = compareStationList(mss, h5parmdb, solset_name, filter) output = compareStationList(mss, h5parmdb, solset_name, filter)
filter_out = output['filter'] filter_out = output['filter']
cwl_output = {"filter_out": filter_out} cwl_output = {"filter_out": filter_out}
with open('./out.json', 'w') as fp: with open('./out.json', 'w') as fp:
json.dump(cwl_output, fp) json.dump(cwl_output, fp)
outputs: outputs:
- id: filter_out - id: filter_out
type: string type: string
...@@ -54,12 +57,8 @@ outputs: ...@@ -54,12 +57,8 @@ outputs:
type: File[] type: File[]
outputBinding: outputBinding:
glob: 'compareStationList*.log' glob: 'compareStationList*.log'
requirements:
- class: InlineJavascriptRequirement
hints: hints:
- class: DockerRequirement - class: DockerRequirement
dockerPull: lofareosc/prefactor3-cwl dockerPull: lofareosc/prefactor3-cwl
stdout: compareStationList.log stdout: compareStationList.log
stderr: compareStationList_err.log stderr: compareStationList_err.log
\ No newline at end of file
...@@ -42,31 +42,32 @@ requirements: ...@@ -42,31 +42,32 @@ requirements:
import json import json
import os import os
group_id = "$(inputs.group_id)" inputs = json.loads(r"""$(inputs)""")
group_id = inputs['group_id']
json_file = sys.argv[1] json_file = sys.argv[1]
ms_list = sys.argv[2:] ms_list = sys.argv[2:]
ms_by_name = { ms.split(os.path.sep)[-1]: ms_by_name = { ms.split(os.path.sep)[-1]:
{'class':'Directory', 'path': ms} for ms in ms_list} {'class':'Directory', 'path': ms} for ms in ms_list}
output_file = 'selected_ms.json' output_file = 'selected_ms.json'
with open(json_file, 'r') as f_stream: with open(json_file, 'r') as f_stream:
selected_ms = json.load(f_stream)[group_id] selected_ms = json.load(f_stream)[group_id]
selected_ms = [os.path.basename(ms_name) for ms_name in selected_ms] selected_ms = [os.path.basename(ms_name) for ms_name in selected_ms]
cwl_output = {'selected_ms': selected_ms} cwl_output = {'selected_ms': selected_ms}
with open('./out.json', 'w') as fp: with open('./out.json', 'w') as fp:
json.dump(cwl_output, fp) json.dump(cwl_output, fp)
selected_ms = [ms_by_name[ms_name] for ms_name in selected_ms if ms_name != 'dummy.ms'] selected_ms = [ms_by_name[ms_name] for ms_name in selected_ms if ms_name != 'dummy.ms']
with open(output_file, 'w') as f_stream: with open(output_file, 'w') as f_stream:
json.dump(selected_ms, f_stream) json.dump(selected_ms, f_stream)
hints: hints:
- class: InitialWorkDirRequirement - class: InitialWorkDirRequirement
...@@ -75,4 +76,4 @@ hints: ...@@ -75,4 +76,4 @@ hints:
writable: true writable: true
stdout: filter_ms_by_group.log stdout: filter_ms_by_group.log
stderr: filter_ms_by_group_err.log stderr: filter_ms_by_group_err.log
\ No newline at end of file
...@@ -19,7 +19,7 @@ inputs: ...@@ -19,7 +19,7 @@ inputs:
type: string? type: string?
default: 'NONE' default: 'NONE'
doc: Provide state information for collecting antenna statistics doc: Provide state information for collecting antenna statistics
label: findRefAnt_join label: findRefAnt_join
outputs: outputs:
...@@ -36,8 +36,8 @@ outputs: ...@@ -36,8 +36,8 @@ outputs:
- id: logfile - id: logfile
type: File type: File
outputBinding: outputBinding:
glob: findRefAnt.log glob: findRefAnt.log
requirements: requirements:
- class: InlineJavascriptRequirement - class: InlineJavascriptRequirement
- class: InitialWorkDirRequirement - class: InitialWorkDirRequirement
...@@ -50,12 +50,13 @@ requirements: ...@@ -50,12 +50,13 @@ requirements:
import json import json
import re import re
import ast import ast
inputs = json.loads(r"""$(inputs)""")
with open('input.json', 'r') as f_stream: with open('input.json', 'r') as f_stream:
flagged_fraction_dict_list = json.load(f_stream) flagged_fraction_dict_list = json.load(f_stream)
filter_station = '$(inputs.filter_station)' filter_station = inputs['filter_station']
no_station_selected = True no_station_selected = True
while no_station_selected: while no_station_selected:
print('Applying station filter ' + str(filter_station)) print('Applying station filter ' + str(filter_station))
flagged_fraction_data = {} flagged_fraction_data = {}
...@@ -77,7 +78,7 @@ requirements: ...@@ -77,7 +78,7 @@ requirements:
flagged_fraction_list = [] flagged_fraction_list = []
sorted_stations = sorted(flagged_fraction_data.keys()) sorted_stations = sorted(flagged_fraction_data.keys())
flagged_fraction_antenna = {} flagged_fraction_antenna = {}
for antenna in sorted_stations: for antenna in sorted_stations:
...@@ -93,15 +94,15 @@ requirements: ...@@ -93,15 +94,15 @@ requirements:
refant = flagged_fraction_data[min_flagged_fraction][0] refant = flagged_fraction_data[min_flagged_fraction][0]
print('Selected station ' + str(refant) + ' as reference antenna. Fraction of flagged data is ' + '{:>3}'.format('{:.1f}'.format(min_flagged_fraction) + '%')) print('Selected station ' + str(refant) + ' as reference antenna. Fraction of flagged data is ' + '{:>3}'.format('{:.1f}'.format(min_flagged_fraction) + '%'))
flagged_fraction_antenna['state'] = '$(inputs.state)' flagged_fraction_antenna['state'] = inputs['state']
cwl_output = {'refant': str(refant)} cwl_output = {'refant': str(refant)}
with open('./out.json', 'w') as fp: with open('./out.json', 'w') as fp:
json.dump(cwl_output, fp) json.dump(cwl_output, fp)
with open('./flagged_fraction_antenna.json', 'w') as fp: with open('./flagged_fraction_antenna.json', 'w') as fp:
json.dump(flagged_fraction_antenna, fp) json.dump(flagged_fraction_antenna, fp)
stdout: findRefAnt.log stdout: findRefAnt.log
stderr: findRefAnt_err.log stderr: findRefAnt_err.log
...@@ -7,7 +7,7 @@ baseCommand: ...@@ -7,7 +7,7 @@ baseCommand:
- python3 - python3
inputs: inputs:
- id: msin - id: msin
type: type:
- Directory - Directory
- Directory[] - Directory[]
doc: MS containing the calibrator doc: MS containing the calibrator
...@@ -45,8 +45,8 @@ outputs: ...@@ -45,8 +45,8 @@ outputs:
- id: logfile - id: logfile
type: File type: File
outputBinding: outputBinding:
glob: find_skymodel_cal.log glob: find_skymodel_cal.log
requirements: requirements:
- class: InlineJavascriptRequirement - class: InlineJavascriptRequirement
- class: InitialWorkDirRequirement - class: InitialWorkDirRequirement
...@@ -56,36 +56,37 @@ requirements: ...@@ -56,36 +56,37 @@ requirements:
import sys import sys
import os import os
import shutil import shutil
null = None import json
from unittest.mock import MagicMock from unittest.mock import MagicMock
sys.modules['lofarpipe.support.data_map'] = MagicMock() sys.modules['lofarpipe.support.data_map'] = MagicMock()
from find_skymodel_cal import main as find_skymodel from find_skymodel_cal import main as find_skymodel
import json
mss = sys.argv[1:] mss = sys.argv[1:]
inputs = json.loads(r"""$(inputs)""")
skymodels = $(inputs.skymodels)
max_separation_arcmin = $(inputs.max_separation_arcmin) skymodels = inputs['skymodels']
max_separation_arcmin = inputs['max_separation_arcmin']
max_separation_arcmin = 1.0 if max_separation_arcmin is None else max_separation_arcmin max_separation_arcmin = 1.0 if max_separation_arcmin is None else max_separation_arcmin
extension = "$(inputs.skymodels_extension)" extension = inputs['skymodels_extension']
if skymodels is None: if skymodels is None:
skymodels = os.path.expandvars("$PREFACTOR_DATA_ROOT/skymodels") skymodels = os.path.expandvars("$PREFACTOR_DATA_ROOT/skymodels")
else: else:
skymodels = skymodels["path"] skymodels = skymodels["path"]
output = {} output = {}
if extension != 'null': if extension is not None:
output = find_skymodel(mss, skymodels, extension, max_separation_arcmin=max_separation_arcmin) output = find_skymodel(mss, skymodels, extension, max_separation_arcmin=max_separation_arcmin)
else: else:
output = find_skymodel(mss, skymodels, max_separation_arcmin=max_separation_arcmin) output = find_skymodel(mss, skymodels, max_separation_arcmin=max_separation_arcmin)
skymodel_path = output['SkymodelCal'] skymodel_path = output['SkymodelCal']
skymodel_name = output['SkymodelName'] skymodel_name = output['SkymodelName']
skymodel_path = shutil.copy(skymodel_path, os.getcwd()) skymodel_path = shutil.copy(skymodel_path, os.getcwd())
cwl_output = {"file":{'class': 'File', 'path': skymodel_path}, cwl_output = {"file":{'class': 'File', 'path': skymodel_path},
"skymodel_name": skymodel_name} "skymodel_name": skymodel_name}
with open('./out.json', 'w') as fp: with open('./out.json', 'w') as fp:
json.dump(cwl_output, fp) json.dump(cwl_output, fp)
......
...@@ -5,6 +5,7 @@ $namespaces: ...@@ -5,6 +5,7 @@ $namespaces:
id: find_skymodel_target_py id: find_skymodel_target_py
baseCommand: baseCommand:
- python3 - python3
- find_sky.py
inputs: inputs:
- id: msin - id: msin
type: Directory[] type: Directory[]
...@@ -26,35 +27,37 @@ inputs: ...@@ -26,35 +27,37 @@ inputs:
type: boolean? type: boolean?
doc: Download a new skymodel if given path is empty doc: Download a new skymodel if given path is empty
default: true default: true
requirements:
- class: InlineJavascriptRequirement
- class: InitialWorkDirRequirement
listing:
- entryname: find_sky.py
entry: |
import sys
import shutil
import os
import json
from download_skymodel_target import main as download_skymodel_target
mss = sys.argv[1:]
inputs = json.loads(r"""$(inputs)""")
label: find_skymodel_target.py SkymodelPath = inputs['SkymodelPath']
arguments: if SkymodelPath is None:
- '-c' SkymodelPath = os.getcwd() + "/target.skymodel"
- | else:
import sys SkymodelPath = SkymodelPath["path"]
import shutil
import os
null = None
from download_skymodel_target import main as download_skymodel_target Radius = inputs['Radius']
Source = inputs['Source']
DoDownload = str(inputs['DoDownload'])
mss = sys.argv[1:] output = download_skymodel_target(mss, SkymodelPath, Radius, DoDownload, Source)
SkymodelPath = $(inputs.SkymodelPath) if "target.skymodel" not in SkymodelPath:
if SkymodelPath is None: shutil.copyfile(SkymodelPath, "target.skymodel")
SkymodelPath = os.getcwd() + "/target.skymodel"
else:
SkymodelPath = SkymodelPath["path"]
Radius = $(inputs.Radius)
Source = "$(inputs.Source)"
DoDownload = "$(inputs.DoDownload)"
output = download_skymodel_target(mss, SkymodelPath, Radius, DoDownload, Source)
if "target.skymodel" not in SkymodelPath:
shutil.copyfile(SkymodelPath, "target.skymodel")
outputs: outputs:
- id: skymodel - id: skymodel
type: File? type: File?
...@@ -63,13 +66,9 @@ outputs: ...@@ -63,13 +66,9 @@ outputs:
- id: logfile - id: logfile
type: File type: File
outputBinding: outputBinding:
glob: find_skymodel_target.log glob: find_skymodel_target.log
requirements:
- class: InlineJavascriptRequirement
hints: hints:
- class: DockerRequirement - class: DockerRequirement
dockerPull: lofareosc/prefactor3-cwl dockerPull: lofareosc/prefactor3-cwl
stdout: find_skymodel_target.log stdout: find_skymodel_target.log
\ No newline at end of file
...@@ -5,6 +5,7 @@ $namespaces: ...@@ -5,6 +5,7 @@ $namespaces:
id: identify_bad_antennas_join id: identify_bad_antennas_join
baseCommand: baseCommand:
- python3 - python3
- indentify_bad_antennas.py
inputs: inputs:
- id: flaggedants - id: flaggedants
type: string[]? type: string[]?
...@@ -14,30 +15,34 @@ inputs: ...@@ -14,30 +15,34 @@ inputs:
type: string? type: string?
default: '*&' default: '*&'
doc: Filter these baselines for the comparison doc: Filter these baselines for the comparison
requirements:
- class: InlineJavascriptRequirement
- class: InitialWorkDirRequirement
listing:
- entryname: indentify_bad_antennas.py
entry: |
import sys
import json
label: identifyBadAntennas_join inputs = json.loads(r"""$(inputs)""")
arguments: flaggedants = inputs['flaggedants']
- '-c' filter = inputs['filter']
- |
import sys
import json
flaggedants = $(inputs.flaggedants)
filter = '$(inputs.filter)'
flaggedants_list = [ flaggedant.split(',') for flaggedant in flaggedants ] flaggedants_list = [ flaggedant.split(',') for flaggedant in flaggedants ]
flagged_antenna_list = set.intersection(*map(set, flaggedants_list)) if flaggedants_list:
flagged_antenna_list = set.intersection(*map(set, flaggedants_list))
else:
flagged_antenna_list = set()
for flagged_antenna in flagged_antenna_list: for flagged_antenna in flagged_antenna_list:
if flagged_antenna != '': if flagged_antenna != '':
filter += ';!' + flagged_antenna + '*&&*' filter += ';!' + flagged_antenna + '*&&*'
cwl_output = {"filter": filter} cwl_output = {"filter": filter}
with open('./out.json', 'w') as fp: with open('./out.json', 'w') as fp:
json.dump(cwl_output, fp) json.dump(cwl_output, fp)
outputs: outputs:
- id: filter_out - id: filter_out
...@@ -50,9 +55,5 @@ outputs: ...@@ -50,9 +55,5 @@ outputs:
type: File type: File
outputBinding: outputBinding:
glob: identifyBadAntennas.log glob: identifyBadAntennas.log
requirements:
- class: InlineJavascriptRequirement
stdout: identifyBadAntennas.log stdout: identifyBadAntennas.log
stderr: identifyBadAntennas_err.log stderr: identifyBadAntennas_err.log
...@@ -5,6 +5,7 @@ $namespaces: ...@@ -5,6 +5,7 @@ $namespaces:
id: sort_times_into_freqGroups id: sort_times_into_freqGroups
baseCommand: baseCommand:
- python3 - python3
- sort_times.py
inputs: inputs:
- id: msin - id: msin
type: Directory[] type: Directory[]
...@@ -35,42 +36,42 @@ inputs: ...@@ -35,42 +36,42 @@ inputs:
type: boolean? type: boolean?
default: True default: True
doc: Add dummy file-names for missing frequencies, so that NDPPP can fill the data with flagged dummy data. doc: Add dummy file-names for missing frequencies, so that NDPPP can fill the data with flagged dummy data.
requirements:
- class: InlineJavascriptRequirement
- class: InitialWorkDirRequirement
listing:
- entryname: sort_times.py
entry: |
import sys
import json
from sort_times_into_freqGroups_CWL import main as sort_times_into_freqGroups
mss = sys.argv[1:]
inputs = json.loads(r"""$(inputs)""")
numbands = inputs['numbands']
stepname = inputs['stepname']
NDPPPfill = inputs['NDPPPfill']
mergeLastGroup = inputs['mergeLastGroup']
truncateLastSBs = inputs['truncateLastSBs']
firstSB = inputs['firstSB']
output = sort_times_into_freqGroups(mss, numbands, NDPPPfill, stepname, mergeLastGroup, truncateLastSBs, firstSB)
label: sort_times_into_freqGroups.py filenames = output['filenames']
arguments: groupnames = output['groupnames']
- '-c' total_bandwidth = output['total_bandwidth']
- |
import sys
import json
from sort_times_into_freqGroups_CWL import main as sort_times_into_freqGroups
null = None
false = False
true = True
mss = sys.argv[1:]
numbands = int($(inputs.numbands))
stepname = "$(inputs.stepname)"
NDPPPfill = $(inputs.NDPPPfill)
mergeLastGroup = $(inputs.mergeLastGroup)
truncateLastSBs = $(inputs.truncateLastSBs)
firstSB = $(inputs.firstSB)
output = sort_times_into_freqGroups(mss, numbands, NDPPPfill, stepname, mergeLastGroup, truncateLastSBs, firstSB) cwl_output = {}
cwl_output['groupnames'] = groupnames
cwl_output['total_bandwidth'] = total_bandwidth
filenames = output['filenames'] with open('./filenames.json', 'w') as fp:
groupnames = output['groupnames'] json.dump(filenames, fp)
total_bandwidth = output['total_bandwidth']
with open('./out.json', 'w') as fp:
cwl_output = {} json.dump(cwl_output, fp)
cwl_output['groupnames'] = groupnames
cwl_output['total_bandwidth'] = total_bandwidth
with open('./filenames.json', 'w') as fp:
json.dump(filenames, fp)
with open('./out.json', 'w') as fp:
json.dump(cwl_output, fp)
outputs: outputs:
- id: filenames - id: filenames
type: File type: File
...@@ -91,13 +92,9 @@ outputs: ...@@ -91,13 +92,9 @@ outputs:
- id: logfile - id: logfile
type: File type: File
outputBinding: outputBinding:
glob: sort_times_into_freqGroups.log glob: sort_times_into_freqGroups.log
requirements:
- class: InlineJavascriptRequirement
hints: hints:
- class: DockerRequirement - class: DockerRequirement
dockerPull: lofareosc/prefactor3-cwl dockerPull: lofareosc/prefactor3-cwl
stdout: sort_times_into_freqGroups.log stdout: sort_times_into_freqGroups.log
stderr: sort_times_into_freqGroups_err.log stderr: sort_times_into_freqGroups_err.log
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment