"""
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)