Source code for ska_tmc_cdm.messages.subarray_node.configure.pst

from typing import List, Optional

from pydantic import Field

from ska_tmc_cdm.messages.base import CdmObject
from ska_tmc_cdm.messages.skydirection import SkyDirection

__all__ = [
    "PSTScanConfiguration",
    "PSTBeamConfiguration",
    "PSTConfiguration",
    "ChannelPolarisationSelection",
    "RescaleConfiguration",
    "RequantisationConfiguration",
    "FlowThroughScanConfiguration",
    "DetectedFilterBankScanConfiguration",
    "PulsarTimingScanConfiguration",
    "SpectralKurtosisConfiguration",
]


[docs] class ChannelPolarisationSelection(CdmObject): """ Class to hold channel polarization selection configuration. :param channels: channels :param polarisations: polarisations """ channels: List[int] = Field(default_factory=list) polarisations: str = Field(default_factory=str)
[docs] class RescaleConfiguration(CdmObject): """ Class to hold rescale configuration. :param algorithm: algorithm :param periodic_update: periodic_update :param timescale: timescale """ algorithm: str = Field(default_factory=str) periodic_update: bool = Field(default_factory=bool) timescale: float = Field(default_factory=float)
[docs] class RequantisationConfiguration(CdmObject): """ Class to hold requantisation configuration. :param num_bits_out: num_bits_out :param scale: scale """ num_bits_out: int = Field(default_factory=int) scale: float = Field(default_factory=float)
[docs] class FlowThroughScanConfiguration(CdmObject): """ Class to hold PST Scan configuration for FLOW_THROUGH processing mode for PST. :param channel_polarisation_selection: channel_polarisation_selection :param rescale: rescale :param requantisation: requantisation """ channel_polarisation_selection: ChannelPolarisationSelection = Field( default_factory=ChannelPolarisationSelection ) rescale: RescaleConfiguration = Field(default_factory=RescaleConfiguration) requantisation: RequantisationConfiguration = Field( default_factory=RequantisationConfiguration )
[docs] class SpectralKurtosisConfiguration(CdmObject): """ Class to hold spectral kurtosis configuration for Pulsar Timing scan configuration. :param sk_range: sk_range :param sk_integration_limit: sk_integration_limit :param sk_excision_limit: sk_excision_limit """ sk_range: list = Field(default_factory=list) sk_integration_limit: int = Field(ge=64, le=1024) sk_excision_limit: float = Field(ge=1.0, le=100.0)
[docs] class DetectedFilterBankScanConfiguration(CdmObject): """ Class to hold PST Scan configuration for DETECTED_FILTERBANK processing mode for PST. :param dispersion_measure: The DM for coherent/incoherent de-dispersion in pc/cm^3 :param rotation_measure: The RM for phase-coherent Faraday rotation correction in rad/m^2 :param output_frequency_channels: Number of output frequency channels. The default of -1 means no re-channelisation :param stokes_parameters: The Stokes parameters to output when in Detected Filterbank mode. :param num_bits_out: Number of bits per output sample :param time_decimation_factor: The number of input samples per output time sample :param frequency_decimation_factor: The number of input frequency channels incoherently added to each output frequency channel :param sk_config: List of SK config parameters :param requantisation_scale: Scale factor to govern the dynamic range for fixed precision output during re-quantisation :param requantisation_length: Number of samples to average together when determining the scale factors :param num_sk_config: Number of sk_configs """ dispersion_measure: float = Field(ge=0.0, le=100000.0) rotation_measure: Optional[float] = None output_frequency_channels: int stokes_parameters: str num_bits_out: int time_decimation_factor: int frequency_decimation_factor: int sk_config: list[SpectralKurtosisConfiguration] = Field( default_factory=list, ) requantisation_scale: Optional[float] = None requantisation_length: Optional[float] = None num_sk_config: Optional[int] = None
[docs] class PulsarTimingScanConfiguration(CdmObject): """ Class to hold PST Scan configuration for PULSAR_TIMING processing mode for PST. :param dispersion_measure: The DM for coherent/incoherent de-dispersion in pc/cm^3 :param rotation_measure: The RM for phase-coherent Faraday rotation correction in rad/m^2 :param ephemeris: The ephemeris of the pulsar being observed :param pulsar_phase_predictor: Pulsar phase predictor generated from ephemeris :param output_frequency_channels: Number of output frequency channels. The default of -1 means 'all channels' :param output_phase_bins: Number of output phase bins :param sk_config: List of SK config parameters :param target_snr: The SNR of the on-pulse flux. Can end a scan early and 0 means no limit :param num_sk_config: Number of sk_configs """ dispersion_measure: float = Field(ge=0.0, le=100000.0) rotation_measure: Optional[float] = None ephemeris: str pulsar_phase_predictor: str output_frequency_channels: int output_phase_bins: int = Field(ge=64, le=2048) sk_config: list[SpectralKurtosisConfiguration] = Field( default_factory=list ) target_snr: float = Field(ge=0.0) num_sk_config: Optional[int] = None
[docs] class PSTScanConfiguration(CdmObject): """ Class to hold Scan configuration items :param centre_frequency: Centre frequency :param total_bandwidth: Total bandwidth :param observer_id: Observer ID :param project_id: Project ID :param delay_centre: ITRF coordinates :param receiver_id: Receiver ID :param max_scan_length: Maximum scan length :param subint_duration: Sub-integration duration :param receptors: List of receptors :param receptor_weights: List of receptor weights :param pst_processing_mode: PST processing mode :param target: Target sky direction :param ft: FLOW_THROUGH mode configuration :param df: DETECTED_FILTERBANK mode configuration :param pt: PULSAR_TIMING mode configuration """ centre_frequency: float = 0.0 total_bandwidth: float = 0.0 observer_id: str project_id: str delay_centre: List[float] = Field(default_factory=list) receiver_id: str max_scan_length: float = Field(default=0.0) subint_duration: float = Field(default=10.0) receptors: List[str] receptor_weights: List[float] pst_processing_mode: str target: SkyDirection ft: Optional[FlowThroughScanConfiguration] = None df: Optional[DetectedFilterBankScanConfiguration] = None pt: Optional[PulsarTimingScanConfiguration] = None
[docs] class PSTBeamConfiguration(CdmObject): """ Class to hold PST beam configuration items :param beam_id: Beam ID :param scan: Scan configuration """ beam_id: Optional[int] = None scan: Optional[PSTScanConfiguration] = None
[docs] class PSTConfiguration(CdmObject): """ Class to hold PST configuration items :param beams: List of beam configurations """ beams: List[PSTBeamConfiguration] = Field(default_factory=list)