Continuum Imaging Script
This processing script will run the batch end-to-end batch continuum imaging pipeline. More information about the pipeline is available on the readthedocs.
Workflow of the script
Full details are in the confluence page.
Get and validate the processing block parameters.
Read all flow dependencies (created by
vis-receiveprocessing script) and extractpvc_subpathfrom all of them.Create data flows for the products generated by the e2e pipeline itself
Request sky model from the GSM service (not yet implemented)
Based on PB parameters and pvc_subpaths from data flows, create a JSON configuration that will be passed to the
ska-sdp-batch-e2e-pipeline run-from-sdpcommand.Generate the full “slurm script” string, that will be submitted to the
SlurmDeployerCall the
processing_block.ee_deploy_slurmfunction with above slurm script and other necessary parameters, to deploy the job on Slurm Cluster.Wait for the slurm job to be over, perform any cleanup, and exit.
Processing block parameters
Defines configuration schema for the batch end-to-end continuum imaging pipeline.
The end-to-end pipeline consists of 3 stages: Instrumental Calibration, Target Calibration, Continuum Imaging
- pydantic model AveragerStep
Configuration for averager step of BPP pipeline
Show JSON schema
{ "title": "AveragerStep", "description": "Configuration for averager step of BPP pipeline", "type": "object", "properties": { "timestep": { "default": 4, "description": "Number of time samples to average together.", "title": "Time Averaging Factor", "type": "integer" }, "freqstep": { "default": 4, "description": "Number of frequency channels to average together.", "title": "Frequency Averaging Factor", "type": "integer" } }, "additionalProperties": false }
- Fields:
- pydantic model BandpassCalibration
Configuration for bandpass calibration step of Instrumental calibration pipeline.
Show JSON schema
{ "title": "BandpassCalibration", "description": "Configuration for bandpass calibration step of Instrumental calibration\npipeline.", "type": "object", "properties": { "solver": { "default": "jones_substitution", "description": "Type of solver to use for the calibration.", "enum": [ "gain_substitution", "jones_substitution", "normal_equations", "normal_equations_presum" ], "title": "Solver", "type": "string" }, "niter": { "default": 20, "description": "Maximum number of iterations for the solver.", "title": "Iterations", "type": "integer" }, "tol": { "default": 0.0001, "description": "Tolerance value for solver convergence. Units: NA", "title": "Tolerance for solver convergence", "type": "number" } }, "additionalProperties": false }
- Fields:
- pydantic model ComplexGainCalibration
Configuration for complex gain calibration of Target Instrumental calibration pipeline.
Show JSON schema
{ "title": "ComplexGainCalibration", "description": "Configuration for complex gain calibration of Target Instrumental\ncalibration pipeline.", "type": "object", "properties": { "niter": { "default": 50, "description": "Maximum number of iterations for the solver.", "title": "Iterations", "type": "integer" }, "tol": { "default": 1e-06, "description": "Tolerance value for solver convergence. Units: NA", "title": "Tolerance for solver convergence", "type": "number" } }, "additionalProperties": false }
- Fields:
- pydantic model ContinuumImaging
Configuration for Continuum Imaging stage of the e2e pipeline.
Show JSON schema
{ "title": "ContinuumImaging", "description": "Configuration for Continuum Imaging stage of the e2e pipeline.", "type": "object", "properties": { "polarizations": { "default": "stokes_i", "description": "\n Output polarizations to image. This maps to the\n 'data_product.polarizations' parameter of the CIMG pipeline.\n ", "title": "Polarizations", "type": "string" }, "image_size": { "default": [ 4000, 4000 ], "description": "\n Image size in pixels.\n The sensible value for this parameter will depend on the\n specific data (max baseline and field of view).\n ", "maxItems": 2, "minItems": 2, "prefixItems": [ { "type": "integer" }, { "type": "integer" } ], "title": "Image size (pixels)", "type": "array" }, "pixel_scale": { "default": 0.0005555555555555556, "description": "Pixel scale in degrees. Defines the image resolution.", "title": "Pixel scale (degrees)", "type": "number" }, "briggs_robust_weighting": { "default": -0.5, "description": "Robustness value for briggs weighting", "title": "Briggs robust weighting", "type": "number" }, "output_channels": { "default": 12, "description": "\n Specifies the number of different frequencies for which\n information will be present in the output. For each output\n channel, a separate FITS image will be created. Note that\n increasing this value will increase computations needed to\n generate the output. The processing script might reduce the\n computational intensity by also setting\n `--deconvolution-channels` to an appropriate value.\n ", "title": "Number of output channels", "type": "integer" }, "fit_spectral_pol": { "default": 3, "description": "Order of spectral polynomial to fit across channels.", "title": "Spectral polynomial fitting order", "type": "integer" }, "gaussian_taper": { "default": 0.0, "description": "The beamsize in arcseconds, for Gaussian Tapering.", "title": "Gaussian tapering beamsize (arcseconds)", "type": "number" } }, "additionalProperties": false }
- Fields:
- field polarizations: str = 'stokes_i'
Output polarizations to image. This maps to the ‘data_product.polarizations’ parameter of the CIMG pipeline.
- field image_size: tuple[int, int] = (4000, 4000)
Image size in pixels. The sensible value for this parameter will depend on the specific data (max baseline and field of view).
- Constraints:
strict = False
- field pixel_scale: float = 0.0005555555555555556
Pixel scale in degrees. Defines the image resolution.
- field output_channels: int = 12
Specifies the number of different frequencies for which information will be present in the output. For each output channel, a separate FITS image will be created. Note that increasing this value will increase computations needed to generate the output. The processing script might reduce the computational intensity by also setting –deconvolution-channels to an appropriate value.
- pydantic model ContinuumImagingParams
Batch end-to-end continuum imaging processing script parameters
Show JSON schema
{ "title": "ContinuumImagingParams", "description": "Batch end-to-end continuum imaging processing script parameters", "type": "object", "properties": { "instrumental_calibration": { "$ref": "#/$defs/InstrumentalCalibration", "description": "Configuration for Instrumental Calibration stage of\n the batch e2e pipeline" }, "target_calibration": { "$ref": "#/$defs/TargetCalibration", "description": "Configuration for Target Calibration stage of the\n batch e2e pipeline" }, "continuum_imaging": { "$ref": "#/$defs/ContinuumImaging", "description": "Configuration for Continuum Imaging stage of the\n batch e2e pipeline" } }, "$defs": { "AveragerStep": { "additionalProperties": false, "description": "Configuration for averager step of BPP pipeline", "properties": { "timestep": { "default": 4, "description": "Number of time samples to average together.", "title": "Time Averaging Factor", "type": "integer" }, "freqstep": { "default": 4, "description": "Number of frequency channels to average together.", "title": "Frequency Averaging Factor", "type": "integer" } }, "title": "AveragerStep", "type": "object" }, "BandpassCalibration": { "additionalProperties": false, "description": "Configuration for bandpass calibration step of Instrumental calibration\npipeline.", "properties": { "solver": { "default": "jones_substitution", "description": "Type of solver to use for the calibration.", "enum": [ "gain_substitution", "jones_substitution", "normal_equations", "normal_equations_presum" ], "title": "Solver", "type": "string" }, "niter": { "default": 20, "description": "Maximum number of iterations for the solver.", "title": "Iterations", "type": "integer" }, "tol": { "default": 0.0001, "description": "Tolerance value for solver convergence. Units: NA", "title": "Tolerance for solver convergence", "type": "number" } }, "title": "BandpassCalibration", "type": "object" }, "ComplexGainCalibration": { "additionalProperties": false, "description": "Configuration for complex gain calibration of Target Instrumental\ncalibration pipeline.", "properties": { "niter": { "default": 50, "description": "Maximum number of iterations for the solver.", "title": "Iterations", "type": "integer" }, "tol": { "default": 1e-06, "description": "Tolerance value for solver convergence. Units: NA", "title": "Tolerance for solver convergence", "type": "number" } }, "title": "ComplexGainCalibration", "type": "object" }, "ContinuumImaging": { "additionalProperties": false, "description": "Configuration for Continuum Imaging stage of the e2e pipeline.", "properties": { "polarizations": { "default": "stokes_i", "description": "\n Output polarizations to image. This maps to the\n 'data_product.polarizations' parameter of the CIMG pipeline.\n ", "title": "Polarizations", "type": "string" }, "image_size": { "default": [ 4000, 4000 ], "description": "\n Image size in pixels.\n The sensible value for this parameter will depend on the\n specific data (max baseline and field of view).\n ", "maxItems": 2, "minItems": 2, "prefixItems": [ { "type": "integer" }, { "type": "integer" } ], "title": "Image size (pixels)", "type": "array" }, "pixel_scale": { "default": 0.0005555555555555556, "description": "Pixel scale in degrees. Defines the image resolution.", "title": "Pixel scale (degrees)", "type": "number" }, "briggs_robust_weighting": { "default": -0.5, "description": "Robustness value for briggs weighting", "title": "Briggs robust weighting", "type": "number" }, "output_channels": { "default": 12, "description": "\n Specifies the number of different frequencies for which\n information will be present in the output. For each output\n channel, a separate FITS image will be created. Note that\n increasing this value will increase computations needed to\n generate the output. The processing script might reduce the\n computational intensity by also setting\n `--deconvolution-channels` to an appropriate value.\n ", "title": "Number of output channels", "type": "integer" }, "fit_spectral_pol": { "default": 3, "description": "Order of spectral polynomial to fit across channels.", "title": "Spectral polynomial fitting order", "type": "integer" }, "gaussian_taper": { "default": 0.0, "description": "The beamsize in arcseconds, for Gaussian Tapering.", "title": "Gaussian tapering beamsize (arcseconds)", "type": "number" } }, "title": "ContinuumImaging", "type": "object" }, "InstrumentalCalibration": { "additionalProperties": false, "description": "Configuration for Instrumental Calibration stage of the batch e2e pipeline", "properties": { "averager": { "$ref": "#/$defs/AveragerStep", "description": "Averager parameters. It is used to average the\n visibility data." }, "preflagger": { "$ref": "#/$defs/PreFlaggerStep", "description": "It is used to pre-flag the visibility data." }, "bandpass_calibration": { "$ref": "#/$defs/BandpassCalibration", "description": "Bandpass calibration configuration parameters" } }, "title": "InstrumentalCalibration", "type": "object" }, "IonosphericCalibration": { "additionalProperties": false, "description": "Configuration for the Target Ionospheric calibration pipeline", "properties": { "niter": { "default": 50, "description": "Maximum number of iterations for the solver.", "title": "Iterations", "type": "integer" }, "tol": { "default": 1e-06, "description": "Tolerance value for solver convergence. Units: NA", "title": "Tolerance for solver convergence", "type": "number" }, "zernike_limit": { "anyOf": [ { "items": { "type": "integer" }, "type": "array" }, { "type": "null" } ], "default": null, "description": "list of Zernike index limits:\n Generate all Zernikes with n + |m| <= zernike_limit[cluster_id].\n If None, a default is used by the solver.", "title": "Zernike polynomials" } }, "title": "IonosphericCalibration", "type": "object" }, "PreFlaggerStep": { "additionalProperties": false, "description": "Configuration for pre_flagger step of BPP pipeline", "properties": { "freqrange": { "default": "[154.250..159.810]", "description": "Frequency range to flag, expressed as [start..end].\n Units: MHz", "title": "Frequency range to flag", "type": "string" } }, "title": "PreFlaggerStep", "type": "object" }, "SelfCalibration": { "additionalProperties": false, "description": "Configuration for the self-calibration step performed using ICAL pipeline.", "properties": { "min_selfcal_loops": { "default": 4, "description": "Minimum number of self-calibration loops to perform\n on the target source(s).", "title": "Minimum self-calibration loops", "type": "integer" }, "max_selfcal_loops": { "default": 8, "description": "Maximum number of self-calibration loops to perform\n on the target source(s).", "title": "Maximum self-calibration loops", "type": "integer" } }, "title": "SelfCalibration", "type": "object" }, "TargetCalibration": { "additionalProperties": false, "description": "Configuration for Target Calibration stage of the batch e2e pipeline", "properties": { "averager": { "$ref": "#/$defs/AveragerStep", "description": "Averager parameters. It is used to average the\n visibility data." }, "preflagger": { "$ref": "#/$defs/PreFlaggerStep", "description": "It is used to pre-flag the visibility data." }, "complex_gain_calibration": { "$ref": "#/$defs/ComplexGainCalibration", "description": "Configuration for the Instrumental Target\n calibration pipeline." }, "ionospheric_calibration": { "$ref": "#/$defs/IonosphericCalibration", "description": "Configuration for the Target Ionospheric\n calibration pipeline" }, "self_calibration": { "$ref": "#/$defs/SelfCalibration", "description": "Configuration for the self-calibration pipeline." } }, "title": "TargetCalibration", "type": "object" } }, "additionalProperties": false }
- Fields:
- field instrumental_calibration: InstrumentalCalibration [Optional]
Configuration for Instrumental Calibration stage of the batch e2e pipeline
- field target_calibration: TargetCalibration [Optional]
Configuration for Target Calibration stage of the batch e2e pipeline
- field continuum_imaging: ContinuumImaging [Optional]
Configuration for Continuum Imaging stage of the batch e2e pipeline
- pydantic model InstrumentalCalibration
Configuration for Instrumental Calibration stage of the batch e2e pipeline
Show JSON schema
{ "title": "InstrumentalCalibration", "description": "Configuration for Instrumental Calibration stage of the batch e2e pipeline", "type": "object", "properties": { "averager": { "$ref": "#/$defs/AveragerStep", "description": "Averager parameters. It is used to average the\n visibility data." }, "preflagger": { "$ref": "#/$defs/PreFlaggerStep", "description": "It is used to pre-flag the visibility data." }, "bandpass_calibration": { "$ref": "#/$defs/BandpassCalibration", "description": "Bandpass calibration configuration parameters" } }, "$defs": { "AveragerStep": { "additionalProperties": false, "description": "Configuration for averager step of BPP pipeline", "properties": { "timestep": { "default": 4, "description": "Number of time samples to average together.", "title": "Time Averaging Factor", "type": "integer" }, "freqstep": { "default": 4, "description": "Number of frequency channels to average together.", "title": "Frequency Averaging Factor", "type": "integer" } }, "title": "AveragerStep", "type": "object" }, "BandpassCalibration": { "additionalProperties": false, "description": "Configuration for bandpass calibration step of Instrumental calibration\npipeline.", "properties": { "solver": { "default": "jones_substitution", "description": "Type of solver to use for the calibration.", "enum": [ "gain_substitution", "jones_substitution", "normal_equations", "normal_equations_presum" ], "title": "Solver", "type": "string" }, "niter": { "default": 20, "description": "Maximum number of iterations for the solver.", "title": "Iterations", "type": "integer" }, "tol": { "default": 0.0001, "description": "Tolerance value for solver convergence. Units: NA", "title": "Tolerance for solver convergence", "type": "number" } }, "title": "BandpassCalibration", "type": "object" }, "PreFlaggerStep": { "additionalProperties": false, "description": "Configuration for pre_flagger step of BPP pipeline", "properties": { "freqrange": { "default": "[154.250..159.810]", "description": "Frequency range to flag, expressed as [start..end].\n Units: MHz", "title": "Frequency range to flag", "type": "string" } }, "title": "PreFlaggerStep", "type": "object" } }, "additionalProperties": false }
- Fields:
- field averager: AveragerStep [Optional]
Averager parameters. It is used to average the visibility data.
- field preflagger: PreFlaggerStep [Optional]
It is used to pre-flag the visibility data.
- field bandpass_calibration: BandpassCalibration [Optional]
Bandpass calibration configuration parameters
- pydantic model IonosphericCalibration
Configuration for the Target Ionospheric calibration pipeline
Show JSON schema
{ "title": "IonosphericCalibration", "description": "Configuration for the Target Ionospheric calibration pipeline", "type": "object", "properties": { "niter": { "default": 50, "description": "Maximum number of iterations for the solver.", "title": "Iterations", "type": "integer" }, "tol": { "default": 1e-06, "description": "Tolerance value for solver convergence. Units: NA", "title": "Tolerance for solver convergence", "type": "number" }, "zernike_limit": { "anyOf": [ { "items": { "type": "integer" }, "type": "array" }, { "type": "null" } ], "default": null, "description": "list of Zernike index limits:\n Generate all Zernikes with n + |m| <= zernike_limit[cluster_id].\n If None, a default is used by the solver.", "title": "Zernike polynomials" } }, "additionalProperties": false }
- Fields:
- pydantic model PreFlaggerStep
Configuration for pre_flagger step of BPP pipeline
Show JSON schema
{ "title": "PreFlaggerStep", "description": "Configuration for pre_flagger step of BPP pipeline", "type": "object", "properties": { "freqrange": { "default": "[154.250..159.810]", "description": "Frequency range to flag, expressed as [start..end].\n Units: MHz", "title": "Frequency range to flag", "type": "string" } }, "additionalProperties": false }
- Fields:
- pydantic model SelfCalibration
Configuration for the self-calibration step performed using ICAL pipeline.
Show JSON schema
{ "title": "SelfCalibration", "description": "Configuration for the self-calibration step performed using ICAL pipeline.", "type": "object", "properties": { "min_selfcal_loops": { "default": 4, "description": "Minimum number of self-calibration loops to perform\n on the target source(s).", "title": "Minimum self-calibration loops", "type": "integer" }, "max_selfcal_loops": { "default": 8, "description": "Maximum number of self-calibration loops to perform\n on the target source(s).", "title": "Maximum self-calibration loops", "type": "integer" } }, "additionalProperties": false }
- pydantic model TargetCalibration
Configuration for Target Calibration stage of the batch e2e pipeline
Show JSON schema
{ "title": "TargetCalibration", "description": "Configuration for Target Calibration stage of the batch e2e pipeline", "type": "object", "properties": { "averager": { "$ref": "#/$defs/AveragerStep", "description": "Averager parameters. It is used to average the\n visibility data." }, "preflagger": { "$ref": "#/$defs/PreFlaggerStep", "description": "It is used to pre-flag the visibility data." }, "complex_gain_calibration": { "$ref": "#/$defs/ComplexGainCalibration", "description": "Configuration for the Instrumental Target\n calibration pipeline." }, "ionospheric_calibration": { "$ref": "#/$defs/IonosphericCalibration", "description": "Configuration for the Target Ionospheric\n calibration pipeline" }, "self_calibration": { "$ref": "#/$defs/SelfCalibration", "description": "Configuration for the self-calibration pipeline." } }, "$defs": { "AveragerStep": { "additionalProperties": false, "description": "Configuration for averager step of BPP pipeline", "properties": { "timestep": { "default": 4, "description": "Number of time samples to average together.", "title": "Time Averaging Factor", "type": "integer" }, "freqstep": { "default": 4, "description": "Number of frequency channels to average together.", "title": "Frequency Averaging Factor", "type": "integer" } }, "title": "AveragerStep", "type": "object" }, "ComplexGainCalibration": { "additionalProperties": false, "description": "Configuration for complex gain calibration of Target Instrumental\ncalibration pipeline.", "properties": { "niter": { "default": 50, "description": "Maximum number of iterations for the solver.", "title": "Iterations", "type": "integer" }, "tol": { "default": 1e-06, "description": "Tolerance value for solver convergence. Units: NA", "title": "Tolerance for solver convergence", "type": "number" } }, "title": "ComplexGainCalibration", "type": "object" }, "IonosphericCalibration": { "additionalProperties": false, "description": "Configuration for the Target Ionospheric calibration pipeline", "properties": { "niter": { "default": 50, "description": "Maximum number of iterations for the solver.", "title": "Iterations", "type": "integer" }, "tol": { "default": 1e-06, "description": "Tolerance value for solver convergence. Units: NA", "title": "Tolerance for solver convergence", "type": "number" }, "zernike_limit": { "anyOf": [ { "items": { "type": "integer" }, "type": "array" }, { "type": "null" } ], "default": null, "description": "list of Zernike index limits:\n Generate all Zernikes with n + |m| <= zernike_limit[cluster_id].\n If None, a default is used by the solver.", "title": "Zernike polynomials" } }, "title": "IonosphericCalibration", "type": "object" }, "PreFlaggerStep": { "additionalProperties": false, "description": "Configuration for pre_flagger step of BPP pipeline", "properties": { "freqrange": { "default": "[154.250..159.810]", "description": "Frequency range to flag, expressed as [start..end].\n Units: MHz", "title": "Frequency range to flag", "type": "string" } }, "title": "PreFlaggerStep", "type": "object" }, "SelfCalibration": { "additionalProperties": false, "description": "Configuration for the self-calibration step performed using ICAL pipeline.", "properties": { "min_selfcal_loops": { "default": 4, "description": "Minimum number of self-calibration loops to perform\n on the target source(s).", "title": "Minimum self-calibration loops", "type": "integer" }, "max_selfcal_loops": { "default": 8, "description": "Maximum number of self-calibration loops to perform\n on the target source(s).", "title": "Maximum self-calibration loops", "type": "integer" } }, "title": "SelfCalibration", "type": "object" } }, "additionalProperties": false }
- Fields:
- field averager: AveragerStep [Optional]
Averager parameters. It is used to average the visibility data.
- field preflagger: PreFlaggerStep [Optional]
It is used to pre-flag the visibility data.
- field complex_gain_calibration: ComplexGainCalibration [Optional]
Configuration for the Instrumental Target calibration pipeline.
- field ionospheric_calibration: IonosphericCalibration [Optional]
Configuration for the Target Ionospheric calibration pipeline
- field self_calibration: SelfCalibration [Optional]
Configuration for the self-calibration pipeline.
Changelog
0.2.0
Updated continuum-imaging schema to align with latest e2e continuum imaging pipeline stages configuration.
0.1.0
First release of continuum imaging processing script. This script runs the batch end-to-end continuum imaging pipeline version
1.0.0on SKA HPC Cluster.
0.0.0 (Unreleased)
Add initial schema