diff --git a/steps/compare_station_list.cwl b/steps/compare_station_list.cwl new file mode 100644 index 0000000000000000000000000000000000000000..9657480614b0d409701ef67890ced691baf35fdc --- /dev/null +++ b/steps/compare_station_list.cwl @@ -0,0 +1,64 @@ +class: CommandLineTool +cwlVersion: v1.0 +$namespaces: + sbg: 'https://www.sevenbridges.com/' +id: compare_station_list +baseCommand: + - python3 +inputs: + - id: msin + type: Directory[] + doc: MS to compare with + inputBinding: + position: 0 + - id: h5parmdb + type: File + doc: H5parm database to compare with + - id: solset_name + type: string? + doc: Name of the H5parm solset + default: 'sol000' + - id: filter + type: string? + default: '*&' + doc: Filter these baselines for the comparison + +label: compareStationList.py +arguments: + - '-c' + - | + import sys + 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) + + filter_out = output['filter'] + cwl_output = {"filter_out": filter_out} + + with open('./out.json', 'w') as fp: + json.dump(cwl_output, fp) +outputs: + - id: filter_out + type: string + outputBinding: + loadContents: true + glob: 'out.json' + outputEval: $(JSON.parse(self[0].contents).filter_out) + - id: logfile + type: File? + outputBinding: + glob: compareStationList.log + +requirements: + - class: InlineJavascriptRequirement + +hints: + DockerRequirement: + dockerPull: lofareosc/prefactor:HBAcalibrator +stdout: compareStationList.log \ No newline at end of file diff --git a/steps/createRMh5parm.cwl b/steps/createRMh5parm.cwl new file mode 100644 index 0000000000000000000000000000000000000000..d79ceaa783f93cf1dee382d2c398319b5f5ed019 --- /dev/null +++ b/steps/createRMh5parm.cwl @@ -0,0 +1,123 @@ +class: CommandLineTool +cwlVersion: v1.0 +id: createRMh5parm +label: createRMh5parm +baseCommand: + - python3 + - /usr/local/bin/createRMh5parm.py +inputs: + - id: msin + type: + - Directory + - type: array + items: Directory + inputBinding: + position: 1 + doc: Input measurement set + - id: h5parm + type: File + inputBinding: + position: 2 + doc: Input h5parm solutions file + - id: ionex_server + type: string + doc: IONEX Server path + default: 'ftp://ftp.aiub.unibe.ch/CODE/' + inputBinding: + prefix: '--server' + position: 0 + - id: ionex_prefix + type: string + doc: IONEX Prefix + default: 'CODG' + inputBinding: + prefix: '--prefix' + position: 0 + - id: ionex_path + type: string + doc: IONEX path + default: './' + inputBinding: + prefix: '--path' + position: 0 + - id: solset + type: string + doc: solset in which IONEX solution are put + default: 'sol000' + inputBinding: + prefix: '--solsetName' + position: 0 + - id: timestep + type: float + doc: timestep in seconds + default: 300. + inputBinding: + prefix: '-t' + position: 0 + - id: smart_interpol + type: float + doc: float parameter describing how much of Earth rotation is taken in to account in interpolation of the IONEX files. 1.0 means time interpolation assumes ionosphere rotates in opposite direction of the Earth + default: 0. + inputBinding: + prefix: '-e' + position: 0 + - id: proxyserver + type: string + doc: Specify proxy server if necessary + default: null + inputBinding: + prefix: '--proxyserver' + position: 0 + - id: proxyport + type: int + doc: Specify proxy port if necessary + default: null + inputBinding: + prefix: '--proxyport' + position: 0 + - id: proxytype + type: string + doc: Specify proxy type if necessary + default: null + inputBinding: + prefix: '--proxytype' + position: 0 + - id: proxyuser + type: string + doc: Specify proxy user name if necessary + default: null + inputBinding: + prefix: '--proxyuser' + position: 0 + - id: proxypass + type: string + doc: Specify proxy server password if necessary + default: null + inputBinding: + prefix: '--proxypass' + position: 0 +outputs: + - id: h5parmout + doc: h5parm output + type: File + format: 'lofar:#H5Parm' + outputBinding: + glob: $(inputs.h5parm.basename) + - id: logfile + type: File[] + outputBinding: + glob: 'createh5parm*.log' +hints: + - class: DockerRequirement + dockerPull: lofareosc/prefactor:HBAcalibrator + - class: InitialWorkDirRequirement + listing: + - entry: $(inputs.h5parm) + writable: true + +stdout: createh5parm.log +stderr: createh5parm_err.log +$namespaces: + lofar: https://git.astron.nl/eosc/ontologies/raw/master/schema/lofar.owl +$schema: + - https://git.astron.nl/eosc/ontologies/raw/master/schema/lofar.owl diff --git a/steps/h5parmcat.cwl b/steps/h5parmcat.cwl index 861d08e7a7f49dcbcd09e4b66c48784839b2126a..76f8ae83013bd5123d8695cd43b068cf24470be9 100644 --- a/steps/h5parmcat.cwl +++ b/steps/h5parmcat.cwl @@ -66,9 +66,9 @@ outputs: glob: $(inputs.input_file.basename) format: lofar:#H5Parm - id: log - type: File + type: File[] outputBinding: - glob: parm_collector_output.log + glob: 'parm_collector_output*.log' label: h5parm_cat arguments: - position: 0 @@ -84,5 +84,6 @@ hints: - class: DockerRequirement dockerPull: lofareosc/prefactor:HBAcalibrator stdout: parm_collector_output.log +stderr: parm_collector_output_err.log $schema: - 'https://git.astron.nl/eosc/ontologies/raw/master/schema/lofar.owl' diff --git a/workflows/HBA_target.cwl b/workflows/HBA_target.cwl index 57b3cea6a5e5ef984e92e0353899ca1f818a0d48..ff392d0902b5ff2c1f8a9f8b803273d80be2bb6c 100644 --- a/workflows/HBA_target.cwl +++ b/workflows/HBA_target.cwl @@ -179,8 +179,10 @@ inputs: 'sbg:x': -1000 'sbg:y': 1700 - id: reference_stationSB - type: int? - default: None + type: + - int? + - string? + default: '' 'sbg:x': -1000 'sbg:y': 1800 - id: ionex_server @@ -195,27 +197,27 @@ inputs: 'sbg:y': 2000 - id: proxy_server type: string? - default: '' + default: null 'sbg:x': -1000 'sbg:y': 2100 - id: proxy_port type: string? - default: '' + default: null 'sbg:x': -1000 'sbg:y': 2200 - id: proxy_type type: string? - default: '' + default: null 'sbg:x': -1000 'sbg:y': 2300 - id: proxy_user type: string? - default: '' + default: null 'sbg:x': -1000 'sbg:y': 2400 - id: proxy_pass type: string? - default: '' + default: null 'sbg:x': -1000 'sbg:y': 2500 outputs: @@ -285,8 +287,6 @@ steps: source: overhead - id: min_separation source: min_separation - - id: calibrator_path_skymodel - source: calibrator_path_skymodel - id: A-Team_skymodel source: A-Team_skymodel - id: target_skymodel @@ -324,7 +324,6 @@ steps: out: - id: logfiles - id: msout - - id: parset - id: solutions - id: inspection run: ./prefactor_target.cwl diff --git a/workflows/prefactor_target.cwl b/workflows/prefactor_target.cwl index 972705e863d5e083072f148a2edde90c8102c467..ee4591d1704d4d3084a6345e2ba084fa5d0152d9 100644 --- a/workflows/prefactor_target.cwl +++ b/workflows/prefactor_target.cwl @@ -179,8 +179,10 @@ inputs: 'sbg:x': -1000 'sbg:y': 1700 - id: reference_stationSB - type: int? - default: None + type: + - int? + - string? + default: '' 'sbg:x': -1000 'sbg:y': 1800 - id: ionex_server @@ -195,35 +197,34 @@ inputs: 'sbg:y': 2000 - id: proxy_server type: string? - default: '' + default: null 'sbg:x': -1000 'sbg:y': 2100 - id: proxy_port type: string? - default: '' + default: null 'sbg:x': -1000 'sbg:y': 2200 - id: proxy_type type: string? - default: '' + default: null 'sbg:x': -1000 'sbg:y': 2300 - id: proxy_user type: string? - default: '' + default: null 'sbg:x': -1000 'sbg:y': 2400 - id: proxy_pass type: string? - default: '' + default: null 'sbg:x': -1000 'sbg:y': 2500 outputs: - id: inspection linkMerge: merge_flattened outputSource: - - prep/check_Ateam_separation.png - - prep/RMextract.png + - prep/inspection type: File[] 'sbg:x': 2000 'sbg:y': -600 @@ -266,8 +267,8 @@ steps: source: demix - id: apply_steps source: apply_steps - - id: clipAteam - source: clipAteam + - id: clipATeam + source: clipATeam - id: max_dppp_threads source: max_dppp_threads - id: memoryperc @@ -311,9 +312,8 @@ steps: out: - id: outh5parm - id: logfiles - - id: check_Ateam_separation.png + - id: inspection - id: msout - - id: target_name run: ./prefactor_target/prep.cwl label: prep 'sbg:x': 0 diff --git a/workflows/prefactor_target/prep.cwl b/workflows/prefactor_target/prep.cwl index 06ef5cc2b2f1888bbe4710e72bc648e07294d8a9..9dbd0663608e11268ffbc2dace52956cf467bcb9 100644 --- a/workflows/prefactor_target/prep.cwl +++ b/workflows/prefactor_target/prep.cwl @@ -10,7 +10,7 @@ inputs: 'sbg:x': -1000 'sbg:y': -1700 - id: cal_solutions - type: 'File' + type: File 'sbg:x': -1000 'sbg:y': -1600 - id: flag_baselines @@ -106,7 +106,7 @@ inputs: 'sbg:y': 200 - id: avg_timeresolution type: float? - default: 4. + default: 4 'sbg:x': -1000 'sbg:y': 300 - id: avg_freqresolution @@ -121,147 +121,67 @@ inputs: 'sbg:y': 500 - id: ionex_prefix type: string? - default: 'CODG' + default: CODG 'sbg:x': -1000 'sbg:y': 600 - id: proxy_server type: string? - default: '' + default: null 'sbg:x': -1000 'sbg:y': 700 - id: proxy_port - type: string? - default: '' + type: int? + default: null 'sbg:x': -1000 'sbg:y': 800 - id: proxy_type type: string? - default: '' + default: null 'sbg:x': -1000 'sbg:y': 900 - id: proxy_user type: string? - default: '' + default: null 'sbg:x': -1000 'sbg:y': 1000 - id: proxy_pass type: string? - default: '' + default: null 'sbg:x': -1000 'sbg:y': 1100 outputs: - id: outh5parm outputSource: - - h5parm_collector/outh5parm + - createRMh5parm/h5parmout type: File 'sbg:x': 1000 'sbg:y': -500 - - id: check_Ateam_separation.png + - id: inspection outputSource: - check_ateam_separation/output_imag - type: File + - losoto_plot_RM/output_plots + type: 'File[]?' + linkMerge: merge_flattened 'sbg:x': 1000 'sbg:y': -300 - id: msout outputSource: - - predict_calibrate/msout + - msin type: 'Directory[]' 'sbg:x': 1000 'sbg:y': 0 - - id: parset - outputSource: - - ndppp_prep_cal/parset - type: 'File[]' - 'sbg:x': 1000 - 'sbg:y': 200 - - id: calibrator_name - outputSource: - - find_skymodel_cal/model_name - type: string - 'sbg:x': 1000 - 'sbg:y': 400 - - id: outh5parm_logfile - outputSource: - - h5parm_collector/log - type: File[] - 'sbg:x': 1000 - 'sbg:y': 650 - id: logfiles - linkMerge: merge_flattened outputSource: - - concat_logfiles_calib/output - - concat_logfiles_predict/output - - concat_logfiles_blsmooth/output - - make_sourcedb/log - - find_skymodel_cal/logfile - - concat_logfiles_prep_cal/output - make_sourcedb_ateam/log - check_ateam_separation/logfile + - createRMh5parm/logfile + - losoto_plot_RM/logfile + - compare_station_list/logfile type: 'File[]' + linkMerge: merge_flattened 'sbg:x': 1000 'sbg:y': 800 steps: - - id: ndppp_prep_target - in: - - id: baselines_to_flag - default: [] - source: - - flag_baselines - - id: elevation_to_flag - source: elevation - - id: min_amplitude_to_flag - source: amplmin - - id: memoryperc - default: 20 - source: memoryperc - - id: raw_data - default: false - source: raw_data - - id: demix - default: false - source: demix - - id: msin - linkMerge: merge_flattened - source: - - msin - - id: msin_baseline - default: '*' - source: filter_baselines - - id: skymodel - source: make_sourcedb_ateam/sourcedb - - id: timeresolution - default: 1 - source: avg_timeresolution - - id: freqresolution - default: 12.21kHz - source: avg_freqresolution - - id: demix_timestep - default: 1 - source: demix_timestep - - id: demix_freqstep - default: 1 - source: demix_freqstep - - id: demix_baseline - default: '*' - source: process_baselines_cal - - id: target_source - source: demix_target - - id: ntimechunk - default: 10 - source: max_dppp_threads - - id: subtract_sources - source: - - demix_sources - out: - - id: msout - - id: logfile - - id: parset - run: ../../subworkflow/ndppp_prep_cal.cwl - label: ndppp_prep_target - scatter: - - msin - 'sbg:x': 0 - 'sbg:y': 0 - id: check_ateam_separation in: - id: ms @@ -274,8 +194,26 @@ steps: - id: logfile run: ../../lofar-cwl/steps/check_ateam_separation.cwl label: check_Ateam_separation - 'sbg:x': 0 + 'sbg:x': -500 'sbg:y': -300 + - id: compare_station_list + in: + - id: msin + source: + - msin + - id: h5parmdb + source: cal_solutions + - id: solset_name + default: 'calibrator' + - id: filter + source: filter_baselines + out: + - id: filter_out + - id: logfile + run: ../../steps/compare_station_list.cwl + label: compare_station_list + 'sbg:x': -500 + 'sbg:y': -500 - id: make_sourcedb_ateam in: - id: sky_model @@ -289,19 +227,55 @@ steps: label: make_sourcedb_ateam 'sbg:x': -500 'sbg:y': 300 - - id: concat_logfiles_prep_target + - id: createRMh5parm in: - - id: file_list - linkMerge: merge_flattened - source: ndppp_prep_cal/logfile - - id: file_prefix - default: ndppp_prep_cal + - id: msin + source: + - msin + - id: h5parm + source: cal_solutions + - id: ionex_server + source: ionex_server + - id: ionex_prefix + source: ionex_prefix + - id: solset + default: target + - id: proxyserver + source: proxy_server + - id: proxyport + source: proxy_port + - id: proxytype + source: proxy_type + - id: proxyuser + source: proxy_user + - id: proxypass + source: proxy_pass out: - - id: output - run: ../../steps/concatenate_files.cwl - label: concat_logfiles_prep_target - 'sbg:x': 250 - 'sbg:y': 300 -requirements: - - class: SubworkflowFeatureRequirement - - class: ScatterFeatureRequirement + - id: h5parmout + - id: logfile + run: ../../steps/createRMh5parm.cwl + label: createRMh5parm + 'sbg:x': -500 + 'sbg:y': 0 + - id: losoto_plot_RM + in: + - id: input_h5parm + source: createRMh5parm/h5parmout + - id: soltab + default: target/RMextract + - id: axesInPlot + default: + - time + - id: axisInTable + default: ant + - id: prefix + default: RMextract + out: + - id: output_plots + - id: logfile + - id: parset + run: ../../lofar-cwl/steps/LoSoTo.Plot.cwl + label: losoto_plot_RM + 'sbg:x': -300 + 'sbg:y': 0 +requirements: []