Source code for ska_oso_pdm.sb_definition.csp.pst.pt

"""
The ska_oso_pdm.sb_definition.csp.pst.df module defines a Python
representation of a PST Detected-Filterbank Configuration.
"""

from pydantic import Field, computed_field

from ska_oso_pdm._shared import PdmObject

from .common import SpectralKurtosis


[docs] class PSTPulsarTimingParams(PdmObject): """ Parameters relevant to the pulsar-timing processing mode. :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 num_sk_config: Number of SK configs :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 """ dispersion_measure: float = Field( default=0.0, ge=0.0, le=100000.0, description="The DM for coherent/incoherent de-dispersion in pc/cm^3", ) rotation_measure: float = Field( default=0.0, description="The RM for phase-coherent Faraday rotation correction in rad/m^2", ) ephemeris: str = Field( default="", description="The ephemeris of the pulsar being observed", ) pulsar_phase_predictor: str = Field( default="", description="Pulsar phase predictor generated from ephemeris", ) output_frequency_channels: int = Field( default=-1, description="Number of output frequency channels. The default of -1 means no rechannelisation", ) output_phase_bins: int = Field( default=512, ge=64, le=2048, description="Number of output phase bins" ) sk_config: list[SpectralKurtosis] = Field( default_factory=list, description="List of spectral kurtosis configurations", ) target_snr: float = Field( default=0.0, ge=0.0, description="The SNR of the on-pulse flux. Can end a scan early and 0 means no limit", ) @computed_field @property def num_sk_config(self) -> int: return len(self.sk_config)