Source code for ska_oso_pdm.sb_definition.csp.midcbf

"""
The ska_oso_pdm.sb_definition.csp.midcbf module defines a Python
representation of CSP and FSP configurations.
"""

import enum
from typing import List, Optional

from astropy.units import Quantity
from pydantic import Field

from ska_oso_pdm._shared import AstropyQuantity, PdmObject


[docs] class ReceiverBand(enum.Enum): """ ReceiverBand is an enumeration of SKA MID receiver bands. """ BAND_1 = "1" BAND_2 = "2" BAND_5A = "5a" BAND_5B = "5b"
[docs] class ChannelAveragingFactor(enum.IntEnum): ONE = 1 TWO = 2 THREE = 3 FOUR = 4 SIX = 6 EIGHT = 8 TWELVE = 12 SIXTEEN = 16 TWENTYFOUR = 24 THIRTYONE = 31 THIRTYTWO = 32 FORTYEIGHT = 48
[docs] class CorrelationSPWConfiguration(PdmObject): """ CorrelationSPWConfiguration defines the configuration for a CSP Frequency Slice Processor. :param swp_id: SWP configuration ID [1..27] :param logical_fsp_ids: Logical FPS Ids :param receptors: list of receptors :param zoom_factor: zoom factor [0..6] :param centre_frequency: Centre Frequency :param number_of_channels: Number of Channels :param channel_averaging_factor: Channel Average Factor :param time_integration_factor: integer multiple of correlation integration time (140ms) [1..10] """ spw_id: int = Field(ge=1, le=27) logical_fsp_ids: list[int] receptors: list[str] = Field(default_factory=list) zoom_factor: int = Field(ge=0, le=6) centre_frequency: float number_of_channels: int = Field(ge=1) channel_averaging_factor: ChannelAveragingFactor = ChannelAveragingFactor.ONE time_integration_factor: int = Field(ge=1, le=10)
[docs] class PstSPWConfiguration(PdmObject): """ PstSPWConfiguration defines the configuration for a Mid Correlator Processing Region producing pulsar timing data. :param swp_id: SPW configuration ID [1..27] :param logical_fsp_ids: Logical FSP IDs :param receptors: list of receptors :param centre_frequency: Centre Frequency :param number_of_channels: Number of Channels """ spw_id: int = Field(ge=1, le=27) logical_fsp_ids: list[int] receptors: list[str] = Field(default_factory=list) centre_frequency: float number_of_channels: int = Field(ge=1)
[docs] class Subband(PdmObject): """ Class to hold sub-band :param band_5_tuning: Band 5 Tuning :param frequency_slice_offset: Optional Frequency Slice Offset in AstropyQuantity :param correlation_spws: List of Correlation Spws :param pst_spws: List of PST Spws """ band_5_tuning: Optional[float] = None frequency_slice_offset: AstropyQuantity = Quantity(0, "MHz") correlation_spws: List[CorrelationSPWConfiguration] = Field(default_factory=list) pst_spws: List[PstSPWConfiguration] = Field(default_factory=list)
[docs] class MidCBFConfiguration(PdmObject): """ Class to hold all Correlation SPW configurations. :param frequency_band: Frequency Band :param subbands: list of subbands configurations """ frequency_band: ReceiverBand subbands: List[Subband] = Field(default_factory=list)