spino.pipeline.phase_kepler module¶
Keplerian planetary radial velocity¶
Line-of-sight radial velocity of a transiting planet, in the stellar rest frame, valid for eccentric orbits.
The circular approximation K_p·sin(2π·φ) used elsewhere in the pipeline is
exact only for e = 0. For an eccentric orbit both the amplitude and, more
importantly, the shape of the curve change: around the transit the offset
term e·cos ω_p and the modified slope dominate the error, which can reach
tens of km/s for well-known cases (GJ 3470 b, GJ 436 b, HAT-P-11 b).
Angle convention, matching phase_scheduler.compute_transit_geometry:
NEA pl_orblper is the argument of periastron of the planet, and Winn
(2010, arXiv:1001.2010) uses ω_star = ω_p + 180°. The transit occurs at
true anomaly ν_tr = π/2 − ω_star, which anchors the time of periastron to
the transit ephemeris T0.
With that anchoring, planet_rv_kms reduces identically to
K_p·sin(2π·φ) when e = 0, with the same sign as the rest of the pipeline
(redshift just after transit).
- spino.pipeline.phase_kepler.solve_kepler_E(M, ecc)[source]¶
Solve Kepler’s equation
M = E − e·sin Efor the eccentric anomaly.Newton-Raphson, vectorised over
M. The starting guess is Danby’sE0 = M + 0.85·e·sign(sin M), which converges for every eccentricity below 1 without the stalling that a bareE0 = Mshows near periastron at high e.- Parameters:
M (array_like) – Mean anomaly [rad], any range.
ecc (float) – Eccentricity, 0 <= e < 1.
- Returns:
Eccentric anomaly [rad].
- Return type:
ndarray
- spino.pipeline.phase_kepler.time_of_periastron(t0_bjd, period, ecc, omega_p_deg)[source]¶
Time of periastron passage [same units as
t0_bjd], derived from the transit ephemeris.The transit happens at
ν_tr = π/2 − ω_starwithω_star = ω_p + 180°, sot_peri = T0 − P·M_tr/(2π).
- spino.pipeline.phase_kepler.true_anomaly(t_bjd, t0_bjd, period, ecc, omega_p_deg)[source]¶
True anomaly [rad] of the planet at times
t_bjd, with the orbit anchored so that t = T0 is mid-transit.
- spino.pipeline.phase_kepler.planet_rv_kms(t_bjd, t0_bjd, period, ecc, omega_p_deg, kp_kms)[source]¶
Planetary radial velocity in the stellar rest frame [km/s].
V_p(t) = K_p · [cos(ν(t) + ω_p) + e·cos ω_p]
kp_kmsmust already carry the eccentricity correction (K_p / sqrt(1 − e²), see kp_eccentric). For e = 0 this returnsK_p·sin(2π·φ)exactly.
- spino.pipeline.phase_kepler.kp_eccentric(kp_kms, ecc)[source]¶
Planetary semi-amplitude corrected for eccentricity,
K_p / sqrt(1−e²).Returns
Nonewhenkp_kmsis missing, andkp_kmsunchanged for a circular orbit.
- spino.pipeline.phase_kepler.omega_envelope(t_bjd, t0_bjd, period, ecc, kp_kms, n_omega=360)[source]¶
Pointwise range of the planetary RV trace over all possible ω.
Used when the catalogue gives an eccentricity but no argument of periastron: rather than silently picking a value, the pipeline shows how wide the prediction can be.
- Returns:
v_lo/v_hiare arrays shaped liket_bjd;omega_gridis the ω sampling in degrees.- Return type:
(v_lo, v_hi, omega_grid)
- spino.pipeline.phase_kepler.orbit_solution(t_bjd, t0_bjd, period, ecc, omega_p_deg, kp_kms, n_omega=360)[source]¶
Pick the orbital treatment for a target and evaluate every trace the plot needs.
Three branches:
circulare missing or below ECC_MIN. Identical to the pipeline’s historical behaviour.
kepleriane and ω both known. The adopted trace is the Keplerian one.
envelopee known, ω missing. There is no preferred trace, so the adopted curve stays circular and the plot shows the band spanned by every possible ω around it. This is what makes the size of the unknown visible rather than hidden behind an arbitrary default.
- Returns:
Keys
mode,v_adopted,v_circ,v_lo,v_hi,ecc,omega_used,kp_circ,kp_ecc,max_dev_circ.Nonewhen K_p is unavailable, since nothing can be predicted then.- Return type:
dict | None