jaxpint.binary#

Binary delay models for JaxPINT.

Ports PINT’s standalone binary models as pure Equinox modules with JAX autodiff.

class jaxpint.binary.BinaryBT(pb_name='PB', t0_name='T0', a1_name='A1', ecc_name='ECC', om_name='OM', pbdot_name=None, omdot_name=None, edot_name=None, a1dot_name=None, gamma_name=None, xpbdot_name=None)[source]#

Bases: DelayComponent

Blandford-Teukolsky binary delay model.

All hand-coded derivatives are omitted; jax.jacobian through __call__ replaces PINT’s d_BTdelay_d_* functions.

Parameters:
  • pb_name (str) – Name of binary period parameter (days).

  • t0_name (str) – Name of periastron epoch parameter (MJD, int/frac split).

  • a1_name (str) – Name of projected semi-major axis parameter (light-seconds).

  • ecc_name (str) – Name of eccentricity parameter (dimensionless).

  • om_name (str) – Name of longitude of periastron parameter (radians in ParameterVector).

  • pbdot_name (str | None) – Optional parameter names for secular derivatives. None disables.

  • omdot_name (str | None) – Optional parameter names for secular derivatives. None disables.

  • edot_name (str | None) – Optional parameter names for secular derivatives. None disables.

  • a1dot_name (str | None) – Optional parameter names for secular derivatives. None disables.

  • gamma_name (str | None) – Optional parameter names for secular derivatives. None disables.

  • xpbdot_name (str | None) – Optional parameter names for secular derivatives. None disables.

pb_name: str = 'PB'#
t0_name: str = 'T0'#
a1_name: str = 'A1'#
ecc_name: str = 'ECC'#
om_name: str = 'OM'#
pbdot_name: str | None = None#
omdot_name: str | None = None#
edot_name: str | None = None#
a1dot_name: str | None = None#
gamma_name: str | None = None#
xpbdot_name: str | None = None#
class jaxpint.binary.BinaryBTPiecewise(pb_name='PB', t0_name='T0', a1_name='A1', ecc_name='ECC', om_name='OM', pbdot_name=None, omdot_name=None, edot_name=None, a1dot_name=None, gamma_name=None, xpbdot_name=None, n_pieces=0, t0x_names=(), a1x_names=(), xr1_names=(), xr2_names=())[source]#

Bases: DelayComponent

Piecewise BT binary delay model.

Allows different T0 and A1 values for non-overlapping time intervals. The number of pieces and their parameter names are static (set at construction time from the parfile). TOAs outside all defined pieces use the global T0 and A1.

Parameters:
  • n_pieces (int) – Number of piecewise intervals.

  • t0x_names (tuple of str) – Parameter names for piecewise T0 values (epoch parameters).

  • a1x_names (tuple of str) – Parameter names for piecewise A1 values.

  • xr1_names (tuple of str) – Parameter names for piece lower/upper boundaries (MJD, stored as regular parameters in ParameterVector).

  • xr2_names (tuple of str) – Parameter names for piece lower/upper boundaries (MJD, stored as regular parameters in ParameterVector).

  • pb_name (str)

  • t0_name (str)

  • a1_name (str)

  • ecc_name (str)

  • om_name (str)

  • pbdot_name (str | None)

  • omdot_name (str | None)

  • edot_name (str | None)

  • a1dot_name (str | None)

  • gamma_name (str | None)

  • xpbdot_name (str | None)

pb_name: str = 'PB'#
t0_name: str = 'T0'#
a1_name: str = 'A1'#
ecc_name: str = 'ECC'#
om_name: str = 'OM'#
pbdot_name: str | None = None#
omdot_name: str | None = None#
edot_name: str | None = None#
a1dot_name: str | None = None#
gamma_name: str | None = None#
xpbdot_name: str | None = None#
n_pieces: int = 0#
t0x_names: tuple[str, ...] = ()#
a1x_names: tuple[str, ...] = ()#
xr1_names: tuple[str, ...] = ()#
xr2_names: tuple[str, ...] = ()#
class jaxpint.binary.BinaryDD(pb_name='PB', t0_name='T0', a1_name='A1', ecc_name='ECC', om_name='OM', pbdot_name=None, omdot_name=None, edot_name=None, a1dot_name=None, xpbdot_name=None, gamma_name=None, dr_name=None, dth_name=None, a0_name=None, b0_name=None, shapiro_mode='standard', m2_name=None, sini_name=None, shapmax_name=None, h3_name=None, stigma_name=None)[source]#

Bases: DelayComponent

Damour-Deruelle binary delay model.

All hand-coded derivatives are omitted; jax.jacobian through __call__ replaces PINT’s d_DDdelay_d_* functions.

Supports three Shapiro delay parameterizations via shapiro_mode:

  • "standard" (DD): Uses SINI and M2 directly.

  • "shapmax" (DDS): Uses SHAPMAX = -ln(1 - sin(i)).

  • "h3stigma" (DDH): Uses H3 and STIGMA.

Parameters:
  • pb_name (str)

  • t0_name (str)

  • a1_name (str)

  • ecc_name (str)

  • om_name (str)

  • pbdot_name (str | None)

  • omdot_name (str | None)

  • edot_name (str | None)

  • a1dot_name (str | None)

  • xpbdot_name (str | None)

  • gamma_name (str | None)

  • dr_name (str | None)

  • dth_name (str | None)

  • a0_name (str | None)

  • b0_name (str | None)

  • shapiro_mode (str)

  • m2_name (str | None)

  • sini_name (str | None)

  • shapmax_name (str | None)

  • h3_name (str | None)

  • stigma_name (str | None)

pb_name: str = 'PB'#
t0_name: str = 'T0'#
a1_name: str = 'A1'#
ecc_name: str = 'ECC'#
om_name: str = 'OM'#
pbdot_name: str | None = None#
omdot_name: str | None = None#
edot_name: str | None = None#
a1dot_name: str | None = None#
xpbdot_name: str | None = None#
gamma_name: str | None = None#
dr_name: str | None = None#
dth_name: str | None = None#
a0_name: str | None = None#
b0_name: str | None = None#
shapiro_mode: str = 'standard'#
m2_name: str | None = None#
sini_name: str | None = None#
shapmax_name: str | None = None#
h3_name: str | None = None#
stigma_name: str | None = None#
class jaxpint.binary.BinaryDDGR(pb_name='PB', t0_name='T0', a1_name='A1', ecc_name='ECC', om_name='OM', mtot_name='MTOT', m2_name='M2', edot_name=None, a1dot_name=None, xomdot_name=None, xpbdot_name=None, a0_name=None, b0_name=None)[source]#

Bases: DelayComponent

DD model with GR-derived post-Keplerian parameters.

Input masses MTOT and M2 determine all PK parameters via GR. XOMDOT and XPBDOT allow for excess beyond GR predictions.

Parameters:
  • pb_name (str)

  • t0_name (str)

  • a1_name (str)

  • ecc_name (str)

  • om_name (str)

  • mtot_name (str)

  • m2_name (str)

  • edot_name (str | None)

  • a1dot_name (str | None)

  • xomdot_name (str | None)

  • xpbdot_name (str | None)

  • a0_name (str | None)

  • b0_name (str | None)

pb_name: str = 'PB'#
t0_name: str = 'T0'#
a1_name: str = 'A1'#
ecc_name: str = 'ECC'#
om_name: str = 'OM'#
mtot_name: str = 'MTOT'#
m2_name: str = 'M2'#
edot_name: str | None = None#
a1dot_name: str | None = None#
xomdot_name: str | None = None#
xpbdot_name: str | None = None#
a0_name: str | None = None#
b0_name: str | None = None#
class jaxpint.binary.BinaryDDK(pb_name='PB', t0_name='T0', a1_name='A1', ecc_name='ECC', om_name='OM', pbdot_name=None, omdot_name=None, edot_name=None, a1dot_name=None, xpbdot_name=None, gamma_name=None, dr_name=None, dth_name=None, a0_name=None, b0_name=None, m2_name=None, kin_name='KIN', kom_name='KOM', k96=True, raj_name='RAJ', decj_name='DECJ', pmra_name=None, pmdec_name=None, posepoch_name=None, px_name='PX')[source]#

Bases: DelayComponent

DDK binary delay model.

All hand-coded derivatives are omitted; jax.jacobian through __call__ replaces PINT’s d_*_d_* methods.

Parameters:
  • kin_name (str) – Inclination angle KIN (radians in ParameterVector).

  • kom_name (str) – Longitude of ascending node KOM (radians in ParameterVector).

  • k96 (bool) – If True, apply proper motion corrections (Kopeikin 1996).

  • raj_name (str) – Pulsar position parameter names (radians).

  • decj_name (str) – Pulsar position parameter names (radians).

  • pmra_name (str, optional) – Proper motion parameter names (mas/yr or equivalent).

  • pmdec_name (str, optional) – Proper motion parameter names (mas/yr or equivalent).

  • posepoch_name (str, optional) – Proper motion reference epoch.

  • px_name (str) – Parallax parameter name (mas).

  • pb_name (str)

  • t0_name (str)

  • a1_name (str)

  • ecc_name (str)

  • om_name (str)

  • pbdot_name (str | None)

  • omdot_name (str | None)

  • edot_name (str | None)

  • a1dot_name (str | None)

  • xpbdot_name (str | None)

  • gamma_name (str | None)

  • dr_name (str | None)

  • dth_name (str | None)

  • a0_name (str | None)

  • b0_name (str | None)

  • m2_name (str | None)

pb_name: str = 'PB'#
t0_name: str = 'T0'#
a1_name: str = 'A1'#
ecc_name: str = 'ECC'#
om_name: str = 'OM'#
pbdot_name: str | None = None#
omdot_name: str | None = None#
edot_name: str | None = None#
a1dot_name: str | None = None#
xpbdot_name: str | None = None#
gamma_name: str | None = None#
dr_name: str | None = None#
dth_name: str | None = None#
a0_name: str | None = None#
b0_name: str | None = None#
m2_name: str | None = None#
kin_name: str = 'KIN'#
kom_name: str = 'KOM'#
k96: bool = True#
raj_name: str = 'RAJ'#
decj_name: str = 'DECJ'#
pmra_name: str | None = None#
pmdec_name: str | None = None#
posepoch_name: str | None = None#
px_name: str = 'PX'#
class jaxpint.binary.BinaryELL1(pb_name='PB', tasc_name='TASC', a1_name='A1', eps1_name='EPS1', eps2_name='EPS2', pbdot_name=None, a1dot_name=None, eps1dot_name=None, eps2dot_name=None, xpbdot_name=None, shapiro_mode='standard', m2_name=None, sini_name=None, h3_name=None, h4_name=None, stigma_name=None, nharms=7, omdot_name=None, lnedot_name=None)[source]#

Bases: DelayComponent

ELL1 binary delay model for low-eccentricity orbits.

Uses rectangular eccentricity (EPS1, EPS2) and TASC epoch. Shapiro delay parameterization controlled by shapiro_mode:

  • "standard": Uses SINI and M2 directly.

  • "none": No Shapiro delay.

Parameters:
  • pb_name (str)

  • tasc_name (str)

  • a1_name (str)

  • eps1_name (str)

  • eps2_name (str)

  • pbdot_name (str | None)

  • a1dot_name (str | None)

  • eps1dot_name (str | None)

  • eps2dot_name (str | None)

  • xpbdot_name (str | None)

  • shapiro_mode (str)

  • m2_name (str | None)

  • sini_name (str | None)

  • h3_name (str | None)

  • h4_name (str | None)

  • stigma_name (str | None)

  • nharms (int)

  • omdot_name (str | None)

  • lnedot_name (str | None)

pb_name: str = 'PB'#
tasc_name: str = 'TASC'#
a1_name: str = 'A1'#
eps1_name: str = 'EPS1'#
eps2_name: str = 'EPS2'#
pbdot_name: str | None = None#
a1dot_name: str | None = None#
eps1dot_name: str | None = None#
eps2dot_name: str | None = None#
xpbdot_name: str | None = None#
shapiro_mode: str = 'standard'#
m2_name: str | None = None#
sini_name: str | None = None#
h3_name: str | None = None#
h4_name: str | None = None#
stigma_name: str | None = None#
nharms: int = 7#
omdot_name: str | None = None#
lnedot_name: str | None = None#
jaxpint.binary.solve_kepler(mean_anomaly, eccentricity)[source]#

Solve Kepler’s equation E - e sin(E) = M for eccentric anomaly E.

Uses Halley’s method with a Danby (1988) initial guess and unrolled iterations so that jax.grad and jax.jacobian work natively.

Parameters:
  • mean_anomaly (array) – Mean anomaly M in radians.

  • eccentricity (array) – Orbital eccentricity (0 <= e < 1). Must broadcast with mean_anomaly.

Returns:

Eccentric anomaly E in radians, same shape as inputs.

Return type:

array