From 9080c3fdfb717e10e1f2cdb40f59cbbcc0e7245f Mon Sep 17 00:00:00 2001 From: mancini <mancini@astron.nl> Date: Wed, 25 Mar 2020 17:37:18 +0100 Subject: [PATCH] Refactor find skymodel cal Former-commit-id: 33381e1da842be3181cddf899f9e0adb0f293a2e Former-commit-id: 26f182cb05ad5123e3a237c51f1db0c0ead04f4d --- steps/find_skymodel_cal.cwl | 33 +++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/steps/find_skymodel_cal.cwl b/steps/find_skymodel_cal.cwl index 51a1dc4a..936a3959 100644 --- a/steps/find_skymodel_cal.cwl +++ b/steps/find_skymodel_cal.cwl @@ -7,12 +7,14 @@ baseCommand: - python3 inputs: - id: msin - type: Directory + type: Directory[] doc: MS containing the calibrator inputBinding: position: 0 - id: skymodels - type: Directory + type: + - Directory? + - File? doc: Directory containing the sky models - id: skymodels_extension type: string? @@ -23,6 +25,9 @@ arguments: - '-c' - | import sys + import os + import shutil + null = None from unittest.mock import MagicMock sys.modules['lofarpipe.support.data_map'] = MagicMock() @@ -31,16 +36,26 @@ arguments: from find_skymodel_cal import main as find_skymodel import json mss = sys.argv[1:] - skymodels = "$(inputs.skymodels.path)" + print(mss) + skymodels = $(inputs.skymodels) extension = "$(inputs.skymodels_extension)" + if skymodels is None: + skymodels = "/data/skymodels" + else: + skymodels = skymodels["path"] output = {} if extension != 'null': output = find_skymodel(mss, skymodels, './', extension) else: output = find_skymodel(mss, skymodels, './') - cwl_output = {'class': 'File', 'path': output['SkymodelCal']} + skymodel_path = output['SkymodelCal'] + skymodel_name = output['SkymodelName'] + skymodel_path = shutil.copy(skymodel_path, os.getcwd()) + cwl_output = {"file":{'class': 'File', 'path': skymodel_path}, + "skymodel_name": skymodel_name} + with open('./out.json', 'w') as fp: json.dump(cwl_output, fp) outputs: @@ -49,11 +64,17 @@ outputs: outputBinding: loadContents: true glob: 'out.json' - outputEval: $(JSON.parse(self[0].contents)) + outputEval: $(JSON.parse(self[0].contents).file) + - id: model_name + type: string + outputBinding: + loadContents: true + glob: 'out.json' + outputEval: $(JSON.parse(self[0].contents).skymodel_name) requirements: - class: InlineJavascriptRequirement hints: DockerRequirement: - dockerPull: lofareosc/prefactor-ci:master + dockerPull: lofareosc/prefactor:latest -- GitLab