diff --git a/steps/filter_ms_group.cwl b/steps/filter_ms_group.cwl new file mode 100644 index 0000000000000000000000000000000000000000..5137406770592dbb1cc63578c94848a4fcf0d489 --- /dev/null +++ b/steps/filter_ms_group.cwl @@ -0,0 +1,57 @@ +class: CommandLineTool +cwlVersion: v1.0 +id: filter_ms_group +baseCommand: + - python3 +arguments: + - position: 0 + valueFrom: script.py +inputs: + - id: group_id + type: string + - id: groups_specification + type: File + inputBinding: + position: 1 + - id: measurement_sets + type: 'Directory[]' + inputBinding: + position: 2 +outputs: + - id: output + type: 'Directory[]?' + outputBinding: + loadContents: true + glob: selected_ms.json + outputEval: '$(JSON.parse(self[0].contents))' +label: filter_ms_group + +requirements: + - class: InlineJavascriptRequirement + - class: InitialWorkDirRequirement + listing: + - entryname: script.py + entry: | + import sys + import json + import os.path as path + group_id = "$(inputs.group_id)" + json_file = sys.argv[1] + ms_list = sys.argv[2:] + + ms_by_name = { ms.split(path.sep)[-1]: + {'class':'Directory', 'path': ms} for ms in ms_list} + + output_file = 'selected_ms.json' + + with open(json_file, 'r') as f_stream: + selected_ms = json.load(f_stream)[group_id] + print(selected_ms, ms_by_name) + selected_ms = [ms_by_name[ms_name] for ms_name in selected_ms] + + + with open(output_file, 'w') as f_stream: + json.dump(selected_ms, f_stream) + + + diff --git a/test_workflow/empty_dirs/ms1/README b/test_workflow/empty_dirs/ms1/README new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/test_workflow/empty_dirs/ms2/README b/test_workflow/empty_dirs/ms2/README new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/test_workflow/empty_dirs/ms3/README b/test_workflow/empty_dirs/ms3/README new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/test_workflow/empty_dirs/ms5/README b/test_workflow/empty_dirs/ms5/README new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/test_workflow/filter_ms_group.json b/test_workflow/filter_ms_group.json new file mode 100644 index 0000000000000000000000000000000000000000..dbdcc34733a9aa358d6d7bd9a2d4769b7e80bf5e --- /dev/null +++ b/test_workflow/filter_ms_group.json @@ -0,0 +1,9 @@ +{ +"group_id": "1", +"groups_specification": {"class": "File", "path": "groups_spec.json"}, +"measurement_sets": [ + {"class": "Directory", "path": "empty_dirs/ms1"}, + {"class": "Directory", "path": "empty_dirs/ms2"}, + {"class": "Directory", "path": "empty_dirs/ms3"}, + {"class": "Directory", "path": "empty_dirs/ms5"}] +} diff --git a/test_workflow/groups_spec.json b/test_workflow/groups_spec.json new file mode 100644 index 0000000000000000000000000000000000000000..89e56a1ffbd550d4ed4f48841a01cc2feaa47578 --- /dev/null +++ b/test_workflow/groups_spec.json @@ -0,0 +1,4 @@ +{ + "1": ["ms1", "ms2"], + "2": ["ms3", "ms5"] +}