From d881ceff8c81a996340e8fd92c1df62603b792c8 Mon Sep 17 00:00:00 2001 From: mancini <mancini@astron.nl> Date: Mon, 31 Aug 2020 12:12:24 +0200 Subject: [PATCH] Add steps and test Former-commit-id: e793a1ff7fc48c490c0d6eac8a3b76b1987ed741 --- steps/filter_ms_group.cwl | 57 +++++++++++++++++++++++++++++ test_workflow/empty_dirs/ms1/README | 0 test_workflow/empty_dirs/ms2/README | 0 test_workflow/empty_dirs/ms3/README | 0 test_workflow/empty_dirs/ms5/README | 0 test_workflow/filter_ms_group.json | 9 +++++ test_workflow/groups_spec.json | 4 ++ 7 files changed, 70 insertions(+) create mode 100644 steps/filter_ms_group.cwl create mode 100644 test_workflow/empty_dirs/ms1/README create mode 100644 test_workflow/empty_dirs/ms2/README create mode 100644 test_workflow/empty_dirs/ms3/README create mode 100644 test_workflow/empty_dirs/ms5/README create mode 100644 test_workflow/filter_ms_group.json create mode 100644 test_workflow/groups_spec.json diff --git a/steps/filter_ms_group.cwl b/steps/filter_ms_group.cwl new file mode 100644 index 00000000..51374067 --- /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 00000000..e69de29b diff --git a/test_workflow/empty_dirs/ms2/README b/test_workflow/empty_dirs/ms2/README new file mode 100644 index 00000000..e69de29b diff --git a/test_workflow/empty_dirs/ms3/README b/test_workflow/empty_dirs/ms3/README new file mode 100644 index 00000000..e69de29b diff --git a/test_workflow/empty_dirs/ms5/README b/test_workflow/empty_dirs/ms5/README new file mode 100644 index 00000000..e69de29b diff --git a/test_workflow/filter_ms_group.json b/test_workflow/filter_ms_group.json new file mode 100644 index 00000000..dbdcc347 --- /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 00000000..89e56a1f --- /dev/null +++ b/test_workflow/groups_spec.json @@ -0,0 +1,4 @@ +{ + "1": ["ms1", "ms2"], + "2": ["ms3", "ms5"] +} -- GitLab