jaxpint.delay#

Delay components for JaxPINT timing models.

class jaxpint.delay.AstrometryEcliptic(elong_name='ELONG', elat_name='ELAT', pmelong_name=None, pmelat_name=None, px_name=None, posepoch_name=None, obliquity_arcsec=84381.406)[source]#

Bases: DelayComponent

Geometric delay for ecliptic sky coordinates.

Computes the same Roemer + parallax delay as AstrometryEquatorial, but the pulsar position is specified in ecliptic coordinates (ELONG/ELAT) which are rotated to ICRS before the delay computation.

Parameters:
  • elong_name (str) – Names of ecliptic longitude/latitude parameters in the ParameterVector (radians).

  • elat_name (str) – Names of ecliptic longitude/latitude parameters in the ParameterVector (radians).

  • pmelong_name (str or None) – Names of proper-motion parameters (mas/yr). None disables PM.

  • pmelat_name (str or None) – Names of proper-motion parameters (mas/yr). None disables PM.

  • px_name (str or None) – Name of the parallax parameter (mas). None disables parallax.

  • posepoch_name (str or None) – Epoch parameter for proper-motion reference. Required when PM is active; ignored otherwise.

  • obliquity_arcsec (float) – Obliquity of the ecliptic in arcseconds (e.g. 84381.406 for IERS2010). Resolved from the ECL parameter at bridge time.

elong_name: str = 'ELONG'#
elat_name: str = 'ELAT'#
pmelong_name: str | None = None#
pmelat_name: str | None = None#
px_name: str | None = None#
posepoch_name: str | None = None#
obliquity_arcsec: float = 84381.406#
class jaxpint.delay.AstrometryEquatorial(raj_name='RAJ', decj_name='DECJ', pmra_name=None, pmdec_name=None, px_name=None, posepoch_name=None)[source]#

Bases: DelayComponent

Geometric delay for equatorial (ICRS) sky coordinates.

Parameters:
  • raj_name (str) – Names of the RA/DEC parameters in the ParameterVector (radians).

  • decj_name (str) – Names of the RA/DEC parameters in the ParameterVector (radians).

  • pmra_name (str or None) – Names of proper-motion parameters (mas/yr). None disables PM.

  • pmdec_name (str or None) – Names of proper-motion parameters (mas/yr). None disables PM.

  • px_name (str or None) – Name of the parallax parameter (mas). None disables parallax.

  • posepoch_name (str or None) – Epoch parameter for proper-motion reference. Required when PM is active; ignored otherwise.

raj_name: str = 'RAJ'#
decj_name: str = 'DECJ'#
pmra_name: str | None = None#
pmdec_name: str | None = None#
px_name: str | None = None#
posepoch_name: str | None = None#
class jaxpint.delay.CMWaveX(n_components, cmwxfreq_names, cmwxsin_names, cmwxcos_names, cmwxepoch_name='CMWXEPOCH', tnchromidx_name='TNCHROMIDX')[source]#

Bases: DelayComponent

Fourier-basis chromatic noise (CMWaveX).

Parameters:
  • n_components (int) – Number of Fourier components.

  • cmwxepoch_name (str) – Name of the reference epoch parameter.

  • cmwxfreq_names (tuple[str, ]) – Names of the frequency parameters (1/day).

  • cmwxsin_names (tuple[str, ]) – Names of the sine amplitude parameters (cmu).

  • cmwxcos_names (tuple[str, ]) – Names of the cosine amplitude parameters (cmu).

  • tnchromidx_name (str) – Name of the chromatic index parameter.

Raises:
  • ValueError – If n_components is less than 1.

  • ValueError – If the length of cmwxfreq_names, cmwxsin_names, or cmwxcos_names does not match n_components.

n_components: int#
cmwxfreq_names: tuple[str, ...]#
cmwxsin_names: tuple[str, ...]#
cmwxcos_names: tuple[str, ...]#
cmwxepoch_name: str = 'CMWXEPOCH'#
tnchromidx_name: str = 'TNCHROMIDX'#
class jaxpint.delay.ChromaticCM(cm_param_names, cmepoch_name='CMEPOCH', tnchromidx_name='TNCHROMIDX')[source]#

Bases: DelayComponent

Chromatic measure delay using a Taylor expansion about CMEPOCH.

Parameters:
  • cm_param_names (tuple[str, ]) – Names of the CM Taylor coefficients, ordered by derivative index. E.g. ("CM",) for constant CM, or ("CM", "CM1", "CM2").

  • cmepoch_name (str) – Name of the reference-epoch parameter (default "CMEPOCH").

  • tnchromidx_name (str) – Name of the chromatic index parameter (default "TNCHROMIDX").

Raises:

ValueError – If no CM terms are provided (cm_param_names is empty).

cm_param_names: tuple[str, ...]#
cmepoch_name: str = 'CMEPOCH'#
tnchromidx_name: str = 'TNCHROMIDX'#
class jaxpint.delay.ChromaticCMX(n_bins, cmx_names, cmxr1_names, cmxr2_names, tnchromidx_name='TNCHROMIDX')[source]#

Bases: DelayComponent

Piecewise-constant chromatic measure delay (CMX model).

Parameters:
  • n_bins (int) – Number of CMX bins.

  • cmx_names (tuple[str, ]) – Names of CMX value parameters, e.g. ("CMX_0001", "CMX_0002").

  • cmxr1_names (tuple[str, ]) – Names of bin-start MJD epoch parameters.

  • cmxr2_names (tuple[str, ]) – Names of bin-end MJD epoch parameters.

  • tnchromidx_name (str) – Name of the chromatic index parameter (default "TNCHROMIDX").

Raises:
  • ValueError – If n_bins is less than 1.

  • ValueError – If the length of cmx_names, cmxr1_names, or cmxr2_names does not match n_bins.

n_bins: int#
cmx_names: tuple[str, ...]#
cmxr1_names: tuple[str, ...]#
cmxr2_names: tuple[str, ...]#
tnchromidx_name: str = 'TNCHROMIDX'#
class jaxpint.delay.DMWaveX(n_components, dmwxfreq_names, dmwxsin_names, dmwxcos_names, dmwxepoch_name='DMWXEPOCH')[source]#

Bases: DispersionDelayComponent

Fourier-basis DM noise (DMWaveX).

Parameters:
  • n_components (int) – Number of Fourier components.

  • dmwxepoch_name (str) – Name of the reference epoch parameter.

  • dmwxfreq_names (tuple[str, ]) – Names of the frequency parameters (1/day).

  • dmwxsin_names (tuple[str, ]) – Names of the sine amplitude parameters (pc cm^-3).

  • dmwxcos_names (tuple[str, ]) – Names of the cosine amplitude parameters (pc cm^-3).

Raises:
  • ValueError – If n_components is less than 1.

  • ValueError – If the length of dmwxfreq_names, dmwxsin_names, or dmwxcos_names does not match n_components.

n_components: int#
dmwxfreq_names: tuple[str, ...]#
dmwxsin_names: tuple[str, ...]#
dmwxcos_names: tuple[str, ...]#
dmwxepoch_name: str = 'DMWXEPOCH'#
compute_dm(toa_data, params, delay)[source]#

Compute DM as a Fourier sum about DMWXEPOCH.

Parameters:
  • toa_data (TOAData) – Pre-extracted TOA data (TDB times for dt from DMWXEPOCH).

  • params (ParameterVector) – Timing-model parameters containing DMWXFREQ, DMWXSIN, DMWXCOS, and DMWXEPOCH values.

  • delay (array, shape (n_toas,)) – Accumulated signal delay in seconds (unused by this method).

Returns:

Fourier-basis DM in pc cm^-3 at each TOA.

Return type:

array, shape (n_toas,)

class jaxpint.delay.DispersionDM(dm_param_names, dmepoch_name='DMEPOCH')[source]#

Bases: DispersionDelayComponent

DM dispersion delay using a Taylor expansion about DMEPOCH.

Parameters:
  • dm_param_names (tuple[str, ]) – Names of the DM Taylor coefficients in the ParameterVector, ordered by derivative index. E.g. ("DM",) for constant DM, or ("DM", "DM1", "DM2") for a second-order expansion.

  • dmepoch_name (str) – Name of the reference-epoch parameter (default "DMEPOCH").

Raises:
  • ValueError – If no DM terms are provided (dm_param_names is empty).

  • ValueError – If the first DM term is not 'DM'.

dm_param_names: tuple[str, ...]#
dmepoch_name: str = 'DMEPOCH'#
compute_dm(toa_data, params, delay)[source]#

Evaluate the DM Taylor expansion at each TOA.

Parameters:
  • toa_data (TOAData) – Pre-extracted TOA data (TDB times used for dt from DMEPOCH).

  • params (ParameterVector) – Timing-model parameters containing DM, DM1, …, and DMEPOCH.

  • delay (array, shape (n_toas,)) – Accumulated signal delay in seconds (unused by this method).

Returns:

Dispersion measure in pc cm^-3 at each TOA.

Return type:

array, shape (n_toas,)

class jaxpint.delay.DispersionDMX(n_bins, dmx_names, dmxr1_names, dmxr2_names)[source]#

Bases: DispersionDelayComponent

Piecewise-constant DM dispersion delay (DMX model).

Parameters:
  • n_bins (int) – Number of DMX bins.

  • dmx_names (tuple[str, ]) – Names of DMX value parameters, e.g. ("DMX_0001", "DMX_0002").

  • dmxr1_names (tuple[str, ]) – Names of bin-start MJD epoch parameters, e.g. ("DMXR1_0001", ...).

  • dmxr2_names (tuple[str, ]) – Names of bin-end MJD epoch parameters, e.g. ("DMXR2_0001", ...).

Raises:
  • ValueError – If n_bins is less than 1.

  • ValueError – If the length of dmx_names, dmxr1_names, or dmxr2_names does not match n_bins.

n_bins: int#
dmx_names: tuple[str, ...]#
dmxr1_names: tuple[str, ...]#
dmxr2_names: tuple[str, ...]#
compute_dm(toa_data, params, delay)[source]#

Compute piecewise-constant DM from DMX bins.

Each TOA receives the DMX value of the bin it falls within. TOAs outside all bins receive zero DM contribution.

Parameters:
  • toa_data (TOAData) – Pre-extracted TOA data (MJD times for bin assignment).

  • params (ParameterVector) – Timing-model parameters containing DMX, DMXR1, DMXR2 values.

  • delay (array, shape (n_toas,)) – Accumulated signal delay in seconds (unused by this method).

Returns:

Piecewise DM in pc cm^-3 at each TOA.

Return type:

array, shape (n_toas,)

class jaxpint.delay.ExponentialDip(n_dips, expdipep_names, expdipamp_names, expdipidx_names, expdiptau_names, expdipeps_name='EXPDIPEPS', expdipfref_name='EXPDIPFREF')[source]#

Bases: DelayComponent

Exponential dip delay model.

Parameters:
  • n_dips (int) – Number of dip events.

  • expdipeps_name (str) – Name of the transition timescale parameter (days).

  • expdipfref_name (str) – Name of the reference frequency parameter (MHz).

  • expdipep_names (tuple[str, ]) – Names of event epoch parameters (MJD).

  • expdipamp_names (tuple[str, ]) – Names of event amplitude parameters (seconds).

  • expdipidx_names (tuple[str, ]) – Names of chromatic index parameters (dimensionless).

  • expdiptau_names (tuple[str, ]) – Names of decay timescale parameters (days).

Raises:
  • ValueError – If n_dips is less than 1.

  • ValueError – If the length of expdipep_names, expdipamp_names, expdipidx_names, or expdiptau_names does not match n_dips.

n_dips: int#
expdipep_names: tuple[str, ...]#
expdipamp_names: tuple[str, ...]#
expdipidx_names: tuple[str, ...]#
expdiptau_names: tuple[str, ...]#
expdipeps_name: str = 'EXPDIPEPS'#
expdipfref_name: str = 'EXPDIPFREF'#
class jaxpint.delay.FDJump(fdjump_param_names, fdjump_fd_indices, use_log=True)[source]#

Bases: DelayComponent

System-dependent FD polynomial delay (FDJump).

Parameters:
  • fdjump_param_names (tuple[str, ]) – Names of the FDJump parameters in the ParameterVector.

  • fdjump_fd_indices (tuple[int, ]) – Polynomial power for each parameter (1-indexed: FD1 → 1, FD2 → 2, …).

  • use_log (bool) – If True, use log(freq/GHz); if False, use freq/GHz.

Raises:

ValueError – If fdjump_param_names and fdjump_fd_indices have different lengths.

fdjump_param_names: tuple[str, ...]#
fdjump_fd_indices: tuple[int, ...]#
use_log: bool = True#
class jaxpint.delay.FrequencyDependent(fd_param_names)[source]#

Bases: DelayComponent

Polynomial delay in log-frequency (FD model).

Parameters:

fd_param_names (tuple[str, ]) – Names of the FD parameters, ordered starting from FD1. E.g. ("FD1", "FD2", "FD3").

Raises:

ValueError – If no FD terms are provided (fd_param_names is empty).

fd_param_names: tuple[str, ...]#
class jaxpint.delay.SolarSystemShapiroDelay(raj_name='RAJ', decj_name='DECJ', pmra_name=None, pmdec_name=None, posepoch_name=None, planet_shapiro=False, obliquity_arcsec=None)[source]#

Bases: DelayComponent

Solar system Shapiro delay (Sun + optional planets).

Parameters:
  • raj_name (str) – Names of the RA/DEC (or ELONG/ELAT) parameters in the ParameterVector (radians).

  • decj_name (str) – Names of the RA/DEC (or ELONG/ELAT) parameters in the ParameterVector (radians).

  • pmra_name (str or None) – Names of proper-motion parameters (mas/yr). None disables PM.

  • pmdec_name (str or None) – Names of proper-motion parameters (mas/yr). None disables PM.

  • posepoch_name (str or None) – Epoch parameter for proper-motion reference.

  • planet_shapiro (bool) – If True, include Jupiter, Saturn, Venus, Uranus, and Neptune contributions in addition to the Sun.

  • obliquity_arcsec (float or None) – When not None, the direction parameters are interpreted as ecliptic coordinates and rotated to ICRS using this obliquity (arcseconds).

raj_name: str = 'RAJ'#
decj_name: str = 'DECJ'#
pmra_name: str | None = None#
pmdec_name: str | None = None#
posepoch_name: str | None = None#
planet_shapiro: bool = False#
obliquity_arcsec: float | None = None#
class jaxpint.delay.SolarWindDispersion(ne_sw_param_names, swepoch_name='SWEPOCH', swm=0, swp_name=None, raj_name='RAJ', decj_name='DECJ', pmra_name=None, pmdec_name=None, posepoch_name=None, obliquity_arcsec=None)[source]#

Bases: DelayComponent

Dispersion delay from the solar wind.

Parameters:
  • ne_sw_param_names (tuple[str, ]) – Names of the NE_SW Taylor coefficients in the ParameterVector, ordered by derivative index. E.g. ("NE_SW",) for constant, or ("NE_SW", "NE_SW1") for a first-order expansion.

  • swepoch_name (str) – Name of the reference-epoch parameter for the NE_SW expansion.

  • swm (int) – Solar wind model: 0 (Edwards et al.) or 1 (Hazboun et al.).

  • swp_name (str or None) – Name of the power-law index parameter. Required for SWM=1.

  • raj_name (str) – Astrometry coordinate parameter names (RA/DEC or ELONG/ELAT).

  • decj_name (str) – Astrometry coordinate parameter names (RA/DEC or ELONG/ELAT).

  • pmra_name (str or None) – Proper-motion parameter names.

  • pmdec_name (str or None) – Proper-motion parameter names.

  • posepoch_name (str or None) – Position epoch parameter name.

  • obliquity_arcsec (float or None) – When set, coordinates are ecliptic; rotate to ICRS.

Raises:
  • ValueError – If no NE_SW terms are provided (ne_sw_param_names is empty).

  • ValueError – If the first NE_SW term is not 'NE_SW'.

  • ValueError – If swm is not 0 or 1.

  • ValueError – If swm is 1 and swp_name is None.

ne_sw_param_names: tuple[str, ...]#
swepoch_name: str = 'SWEPOCH'#
swm: int = 0#
swp_name: str | None = None#
raj_name: str = 'RAJ'#
decj_name: str = 'DECJ'#
pmra_name: str | None = None#
pmdec_name: str | None = None#
posepoch_name: str | None = None#
obliquity_arcsec: float | None = None#
class jaxpint.delay.SolarWindDispersionX(n_bins, swxdm_names, swxp_names, swxr1_names, swxr2_names, theta0, raj_name='RAJ', decj_name='DECJ', pmra_name=None, pmdec_name=None, posepoch_name=None, obliquity_arcsec=None)[source]#

Bases: DelayComponent

Piecewise solar wind dispersion delay (SWX model).

Parameters:
  • n_bins (int) – Number of SWX segments.

  • swxdm_names (tuple[str, ]) – Names of SWXDM parameters, e.g. ("SWXDM_0001", "SWXDM_0002").

  • swxp_names (tuple[str, ]) – Names of SWXP parameters, e.g. ("SWXP_0001", "SWXP_0002").

  • swxr1_names (tuple[str, ]) – Names of bin-start MJD epoch parameters.

  • swxr2_names (tuple[str, ]) – Names of bin-end MJD epoch parameters.

  • theta0 (float) – Elongation at conjunction in radians (precomputed by the bridge).

  • raj_name (str) – Astrometry coordinate parameter names.

  • decj_name (str) – Astrometry coordinate parameter names.

  • pmra_name (str or None) – Proper-motion parameter names.

  • pmdec_name (str or None) – Proper-motion parameter names.

  • posepoch_name (str or None) – Position epoch parameter name.

  • obliquity_arcsec (float or None) – When set, coordinates are ecliptic; rotate to ICRS.

Raises:
  • ValueError – If n_bins is less than 1.

  • ValueError – If the length of swxdm_names, swxp_names, swxr1_names, or swxr2_names does not match n_bins.

n_bins: int#
swxdm_names: tuple[str, ...]#
swxp_names: tuple[str, ...]#
swxr1_names: tuple[str, ...]#
swxr2_names: tuple[str, ...]#
theta0: float#
raj_name: str = 'RAJ'#
decj_name: str = 'DECJ'#
pmra_name: str | None = None#
pmdec_name: str | None = None#
posepoch_name: str | None = None#
obliquity_arcsec: float | None = None#
class jaxpint.delay.TroposphereDelay[source]#

Bases: DelayComponent

Troposphere delay for topocentric TOAs.

All input data (elevation angle, observatory latitude/height) is pre-computed in the bridge layer and stored on TOAData. This component performs the pure-JAX numerical calculation.

Has no fittable parameters — CORRECT_TROPOSPHERE is handled at the bridge level (if False, this component is not added to the model).

class jaxpint.delay.WaveX(n_components, wxfreq_names, wxsin_names, wxcos_names, wxepoch_name='WXEPOCH')[source]#

Bases: DelayComponent

Fourier-basis timing noise (WaveX).

Parameters:
  • n_components (int) – Number of Fourier components.

  • wxepoch_name (str) – Name of the reference epoch parameter.

  • wxfreq_names (tuple[str, ]) – Names of the frequency parameters (1/day).

  • wxsin_names (tuple[str, ]) – Names of the sine amplitude parameters (seconds).

  • wxcos_names (tuple[str, ]) – Names of the cosine amplitude parameters (seconds).

Raises:
  • ValueError – If n_components is less than 1.

  • ValueError – If the length of wxfreq_names, wxsin_names, or wxcos_names does not match n_components.

n_components: int#
wxfreq_names: tuple[str, ...]#
wxsin_names: tuple[str, ...]#
wxcos_names: tuple[str, ...]#
wxepoch_name: str = 'WXEPOCH'#