diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 466d724263fa72c3a328d544bb384be0f1499dd5..d0731b1da88d1e2f9c4ab3ff51648ed0a9bc7cbe 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -46,6 +46,11 @@ losoto_abs: allow_failure: true script: - cwl-runner --no-container steps/LoSoTo.Abs.cwl test_jobs/losoto_abs.json +losoto_plot: + stage: test_steps + allow_failure: true + script: + - cwl-runner --no-container steps/LoSoTo.Plot.cwl test_jobs/losoto_plot.json parset_selector: stage: test_steps diff --git a/steps/LoSoTo.Plot.cwl b/steps/LoSoTo.Plot.cwl new file mode 100644 index 0000000000000000000000000000000000000000..c87748e4445e413ba188c41cebe7f2528a13709b --- /dev/null +++ b/steps/LoSoTo.Plot.cwl @@ -0,0 +1,141 @@ +#!/usr/bin/env cwl-runner + +class: CommandLineTool +cwlVersion: v1.0 +id: losoto_plot + +doc: | + This operation for LoSoTo implements basic plotting WEIGHT: + flag-only compliant, no need for weight + +requirements: + InlineJavascriptRequirement: + expressionLib: + - | + function get_config() { + var par = ['soltab = ' + inputs.soltab] + if (inputs.ncpu !== null) par.push('ncpu='+inputs.ncpu); + par.push('[plot]') + par.push('operation = PLOT') + for(var field_name in inputs){ + if(field_name === 'input_h5parm' || + field_name === 'soltab' || + field_name === 'ncpu') continue; + if(inputs[field_name] === null || + inputs[field_name] === 'null') continue; + par.push(field_name+'='+inputs[field_name]) + } + return par + } + InitialWorkDirRequirement: + listing: + - entryname: 'parset.config' + entry: $(get_config().join('\n')) + - entryname: $(inputs.input_h5parm.basename) + entry: $(inputs.input_h5parm) + writable: true + + +baseCommand: "losoto" + +arguments: + - $(inputs.input_h5parm.basename) + - parset.config + +hints: + DockerRequirement: + dockerPull: lofareosc/prefactor-ci:master + +inputs: + - id: input_h5parm + type: File + - id: soltab + type: string[] + doc: "Tabs to plot" + + - id: axesInPlot + type: string[]? + default: [] + doc: | + 1- or 2-element array which says the coordinates to plot (2 for 3D plots). + - id: axisInTable + type: string? + doc: | + the axis to plot on a page - e.g. ant to get all antenna’s on one file. + - id: axisInCol + type: string? + doc: | + The axis to plot in different colours - e.g. pol to get correlations with + different colors. + - id: axisDiff + type: string? + doc: | + This must be a len=2 axis and the plot will have the differential value + - e.g. ‘pol’ to plot XX-YY. + - id: NColFig + type: int? + doc: | + Number of columns in a multi-table image. By default is automatically + chosen. + - id: figSize + type: int[] + default: [0,0] + doc: | + Size of the image [x,y], if one of the values is 0, then it is + automatically chosen. By default automatic set. + - id: markerSize + type: int? + default: 2 + doc: | + Size of the markers in the 2D plot. By default 2. + - id: minmax + type: float[]? + doc: | + Min max value for the independent variable (0 means automatic). + - id: log + type: string? + doc: | + Use Log=’XYZ’ to set which axes to put in Log. + - id: plotFlag + type: boolean? + default: false + doc: Whether to plot also flags as red points in 2D plots. + - id: doUnwrap + type: boolean? + default: false + doc: Unwrap phases. + - id: refAnt + type: string? + default: '' + doc: | + Reference antenna for phases. By default None. + - id: soltabsToAdd + type: string? + doc: | + Tables to “add†(e.g. ‘sol000/tec000’), it works only for tec and clock + to be added to phases. + - id: makeAntPlot + default: false + type: boolean? + doc: | + Make a plot containing antenna coordinates in x,y and in color the value + to plot, axesInPlot must be [ant]. + - id: makeMovie + default: false + type: boolean? + doc: | + Make a movie summing up all the produced plots. + - id: prefix + type: string? + default: 'losoto.plot.' + doc: | + Prefix to add before the self-generated filename. + - id: ncpu + type: int? + doc: Number of cpus, by default all available. + +outputs: + - id: output_plots + type: File[] + outputBinding: + glob: "$(inputs.prefix)*.png" diff --git a/test_jobs/losoto_plot.json b/test_jobs/losoto_plot.json new file mode 100644 index 0000000000000000000000000000000000000000..f4ed8634385489ed89ebc99ceed0c1509d127172 --- /dev/null +++ b/test_jobs/losoto_plot.json @@ -0,0 +1,6 @@ +{ + "input_h5parm": {"class": "File", "path": "/data/example.h5"}, + "soltab": ["sol000/phase000"], + "axesInPlot": ["time"], + "ncpu": 1 +}