ska_oso_pdm.entities.sdp

The sdp package contains modules that model SB entities concerned with SDP resource allocation and pipeline workflow configuration. The contents of the module are presented in the diagram below.

../../../_images/sdp.png

Class diagram for the sdp package

An example serialisation of this model to JSON is shown below.

# JSON modelled specifically by entities in the sdp package
...
"sdp_configuration": {
  "execution_block": {
    "eb_id": "eb-mvp01-20200325-00001",
    "max_length": 100,
    "context": {"foo": "bar", "baz": 123},
    "beams": [
      {
        "beam_id": "vis0",
        "function": "visibilities"
      },
      {
        "beam_id": "pss1",
        "search_beam_id": 1,
        "function": "pulsar search"
      },
      {
        "beam_id": "pss2",
        "search_beam_id": 2,
        "function": "pulsar search"
      },
      {
        "beam_id": "pst1",
        "timing_beam_id": 1,
        "function": "pulsar search"
      },
      {
        "beam_id": "pst2",
        "timing_beam_id": 2,
        "function": "pulsar search"
      },
      {
        "beam_id": "vlbi",
        "vlbi_beam_id": 1,
        "function": "vlbi"
      }
    ],
    "scan_types": [
      {
        "scan_type_id": ".default",
        "beams": [
          {
            "beam_id": "vis0",
            "channels_id": "vis_channels",
            "polarisations_id": "all"
          },
          {
            "beam_id": "pss1",
            "field_id": "pss_field_0",
            "channels_id": "pulsar_channels",
            "polarisations_id": "all"
          },
          {
            "beam_id": "pss2",
            "field_id": "pss_field_1",
            "channels_id": "pulsar_channels",
            "polarisations_id": "all"
          },
          {
            "beam_id": "pst1",
            "field_id": "pst_field_0",
            "channels_id": "pulsar_channels",
            "polarisations_id": "all"
          },
          {
            "beam_id": "pst2",
            "field_id": "pst_field_1",
            "channels_id": "pulsar_channels",
            "polarisations_id": "all"
          },
          {
            "beam_id": "vlbi",
            "field_id": "vlbi_field",
            "channels_id": "vlbi_channels",
            "polarisations_id": "all"
          }
        ]
      },
      {
        "scan_type_id": ".default",
        "derive_from": ".default",
        "beams": [
          {
            "beam_id": "vis0",
            "field_id": "field_a"
          }
        ]
      }
    ],
    "channels": [
      {
        "channels_id": "vis_channels",
        "spectral_windows": [
          {
            "spectral_window_id": "fsp_1_channels",
            "count": 744,
            "start": 0,
            "stride": 2,
            "freq_min": 350000000,
            "freq_max": 368000000,
            "link_map": [[0,0],[200,1],[744,2],[944,3]]
          },
          {
            "spectral_window_id": "fsp_2_channels",
            "count": 744,
            "start": 2000,
            "stride": 1,
            "freq_min": 360000000,
            "freq_max": 368000000,
            "link_map": [[2000,4],[2200,5]]
          },
          {
            "spectral_window_id": "zoom_window_1",
            "count": 744,
            "start": 4000,
            "stride": 1,
            "freq_min": 360000000,
            "freq_max": 361000000,
            "link_map": [[4000,6],[4200,7]]
          }
        ]
      },
      {
        "channels_id": "pulsar_channels",
        "spectral_windows": [
          {
            "spectral_window_id": "pulsar_fsp_channels",
            "count": 744,
            "start": 0,
            "freq_min": 350000000,
            "freq_max": 368000000
          }
        ]
      }
    ],
    "polarisations": [
      {
        "polarisations_id": "all",
        "corr_type": ["XX","XY","YY","YX"]
      }
    ]
  },
  "processing_blocks": [
    {
      "pb_id": "pb-mvp01-20200325-00001",
      "sbi_ids": ["sbi-mvp01-20200325-00001"],
      "script": {
        "version": "0.1.0",
        "name": "vis_receive",
        "kind": "realtime"
      },
      "parameters": {}
    },
    {
      "pb_id": "pb-mvp01-20200325-00002",
      "sbi_ids": ["sbi-mvp01-20200325-00001"],
      "script": {
        "version": "0.1.0",
        "name": "test_realtime",
        "kind": "realtime"
      },
      "parameters": {}
    },
    {
      "pb_id": "pb-mvp01-20200325-00003",
      "sbi_ids": ["sbi-mvp01-20200325-00001"],
      "script": {
        "version": "0.1.0",
        "name": "ical",
        "kind": "batch"
      },
      "parameters": {},
      "dependencies": [
        {
          "pb_id": "pb-mvp01-20200325-00001",
          "kind": ["visibilities"]
        }
      ]
    },
    {
      "pb_id": "pb-mvp01-20200325-00004",
      "sbi_ids": ["sbi-mvp01-20200325-00001"],
      "script": {
        "version": "0.1.0",
        "name": "dpreb",
        "kind": "batch"
      },
      "parameters": {},
      "dependencies": [
        {
          "pb_id": "pb-mvp01-20200325-00003",
          "kind": ["calibration"]
        }
      ]
    }
  ],
  "resources": {
    "csp_links": [1,2,3,4],
    "receptors": [
      "FS4",
      "FS8",
      "FS16",
      "FS17",
      "FS22",
      "FS23",
      "FS30",
      "FS31",
      "FS32",
      "FS33",
      "FS36",
      "FS52",
      "FS56",
      "FS57",
      "FS59",
      "FS62",
      "FS66",
      "FS69",
      "FS70",
      "FS72",
      "FS73",
      "FS78",
      "FS80",
      "FS88",
      "FS89",
      "FS90",
      "FS91",
      "FS98",
      "FS108",
      "FS111",
      "FS132",
      "FS144",
      "FS146",
      "FS158",
      "FS165",
      "FS167",
      "FS176",
      "FS183",
      "FS193",
      "FS200",
      "FS345",
      "FS346",
      "FS347",
      "FS348",
      "FS349",
      "FS350",
      "FS351",
      "FS352",
      "FS353",
      "FS354",
      "FS355",
      "FS356",
      "FS429",
      "FS430",
      "FS431",
      "FS432",
      "FS433",
      "FS434",
      "FS465",
      "FS466",
      "FS467",
      "FS468",
      "FS469",
      "FS470"
    ],
    "receive_nodes": 10
  }
}
...

The ska_oso_pdm.entities.common.sdp.sdp_configuration module defines a Python object model for the SDP configuration JSON string passed to CentralNode.AssignResources.

class SDPConfiguration(*, execution_block: ExecutionBlock | None = None, resources: Resources | None = None, processing_blocks: List[ProcessingBlock] | None = None)[source]

SDPConfiguration captures the SDP resources and pipeline configuration required to process an execution block.

The ska_oso_pdm.entities.common.sdp.sdp_configuration module defines a Python object model for the Execution Block JSON string passed to CentralNode.AssignResources.

class ExecutionBlock(*, eb_id: str, max_length: float, context: Dict | None = None, beams: List[Beam], scan_types: List[ScanType], channels: List[Channels], polarisations: List[Polarisation])[source]

ExecutionBlock captures the Execution Block resources and pipeline configuration required to process an execution block.

ExecutionBlockID

alias of str

The entities.sdp.processing_block module defines a Python representation of a processing block for SDP configuration.

class PbDependency(*, pb_id: str, kind: List[str])[source]

Class to hold Dependencies for ProcessingBlock

class ProcessingBlock(*, pb_id: str, script: Script, sbi_ids: List[str] | None = None, parameters: Dict | None = None, dependencies: List[PbDependency] | None = None)[source]

Class to hold ProcessingBlock configuration

ProcessingBlockID

alias of str

class Script(*, name: str, kind: ScriptKind, version: str)[source]

Class to hold Script for ProcessingBlock

class ScriptKind(value)[source]

Enumeration class to hold the kind of processing script

The entities.sdp.resources module defines a Python representation of a Resources for SDP configuration.

class Resources(*, csp_links: List[int] | None = None, receptors: List[str] | None = None, receive_nodes: int | None = None)[source]

Class to hold SDP Resources

The entities.sdp.beam module defines a Python representation of beams for SDP configuration.

class Beam(*, beam_id: str, function: BeamFunction, search_beam_id: int | None = None, timing_beam_id: int | None = None, vlbi_beam_id: int | None = None)[source]

Class that defines an SDP Beam configuration.

class BeamFunction(value)[source]

Enumeration of possible functions for an SDP Beam.

BeamID

alias of str

The entities.sdp.channels module defines a Python representation of a channel configuration for SDP configuration.

class Channels(*, channels_id: str, spectral_windows: List[SpectralWindow])[source]

Class to hold Channel configuration

ChannelsID

alias of str

class SpectralWindow(*, spectral_window_id: str, count: int, start: int, freq_min: float, freq_max: float, stride: int | None = None, link_map: List[Tuple] | None = None)[source]

Class to hold Spectral Windows configuration

The entities.sdp.scan_type module defines a Python representation of a scan type for SDP configuration.

class BeamMapping(*, beam_id: str, field_id: str | None = None, channels_id: str | None = None, polarisations_id: str | None = None)[source]

Class to hold mapping of beam parameters to scans

class ScanType(*, scan_type_id: str, derive_from: str | None = None, beams: List[BeamMapping] | None = None)[source]

Class to hold ScanType configuration

ScanTypeID

alias of str

The entities.sdp.polarisation module defines a Python representation of polarisations for SDP configuration.

class Polarisation(*, polarisations_id: str, corr_type: List[str])[source]

Class that defines an SDP Polarisation configuration

PolarisationID

alias of str