API Reference

Core Functions

sgp4jax.tle_to_satrec(line1, line2, gravity=None)

Parse TLE and initialize a SatRec ready for propagation.

Parameters:
  • line1 – First TLE line

  • line2 – Second TLE line

  • gravity – Gravity constants (default WGS72)

Returns:

SatRec NamedTuple

sgp4jax.tles_to_satrec(tles, gravity=None)

Parse an array of TLEs and return a batched SatRec.

Parameters:
  • tles – TLE lines with shape (n_sat, 2). Each row contains [line1, line2] as strings.

  • gravity – Gravity constants (default WGS72).

Returns:

A single SatRec whose fields are stacked arrays with a leading dimension of n_sat, ready for use with jax.vmap.

sgp4jax.propagate(satrec, tsince)

Propagate satellite to time tsince (minutes from epoch).

Parameters:
  • satrec (SatRec) – Initialized SatRec

  • tsince (Array) – Time since epoch in minutes (scalar jnp.ndarray)

Returns:

position vector (3,) in km (TEME frame) v: velocity vector (3,) in km/s (TEME frame) error: error code (0 = success)

Return type:

r

sgp4jax.propagate_jd(satrec, jd, fr)

Propagate satellite to Julian Date (jd + fr).

Returns TEME position (km), velocity (km/s), and error code.

Frame Transformations

sgp4jax.teme_to_gcrf(r_teme, v_teme, jd, fr)

Transform position/velocity from TEME to GCRF (≈ICRS).

Replicates Skyfield’s EarthSatellite._at() transformation chain: M = N @ P @ B, then R = rot_z(theta_GMST1982 - GAST) @ M with the final GCRF vectors obtained via R^T @ r_TEME.

The input Julian date jd + fr is treated as UT1 time (≈UTC). TT and TDB are derived internally using an approximate delta_T model.

Parameters:
  • r_teme – Position in TEME frame (3,) in km.

  • v_teme – Velocity in TEME frame (3,) in km/s.

  • jd – Julian date, integer/whole part (scalar).

  • fr – Julian date, fractional part (scalar).

Returns:

Position in GCRF frame (3,) in km. v_gcrf: Velocity in GCRF frame (3,) in km/s.

Return type:

r_gcrf

sgp4jax.propagate_gcrf(satrec, tsince)

Propagate satellite and return GCRF position/velocity.

Parameters:
  • satrec (SatRec) – Initialized SatRec from tle_to_satrec().

  • tsince (Array) – Time since epoch in minutes (scalar jnp.ndarray).

Returns:

Position in GCRF frame (3,) in km. v_gcrf: Velocity in GCRF frame (3,) in km/s. error: Error code (0 = success).

Return type:

r_gcrf

sgp4jax.propagate_jd_gcrf(satrec, jd, fr)

Propagate satellite to Julian Date (jd + fr) and return GCRF.

The input time jd + fr is interpreted as UTC, matching the time scale of TLE epochs and Measurement Set timestamps. The same UTC value is used for SGP4 propagation and, as an approximation to UT1, for the TEME → GCRF frame transformation (the UT1 − UTC difference is at most 0.9 s, introducing < 1 m frame error).

Parameters:
  • satrec (SatRec) – Initialized SatRec from tle_to_satrec().

  • jd (Array) – Julian date (UTC), integer/whole part (scalar jnp.ndarray).

  • fr (Array) – Julian date (UTC), fractional part (scalar jnp.ndarray).

Returns:

Position in GCRF frame (3,) in km. v_gcrf: Velocity in GCRF frame (3,) in km/s. error: Error code (0 = success).

Return type:

r_gcrf

Batch Convenience Functions

sgp4jax.gcrf_positions(satrec, times_jd)

Propagate a single satellite to multiple UTC Julian dates.

Parameters:
Returns:

Positions in GCRF frame, shape (n_times, 3) in km. v_gcrf: Velocities in GCRF frame, shape (n_times, 3) in km/s.

Return type:

r_gcrf

sgp4jax.gcrf_positions_multi(satrec, times_jd)

Propagate multiple satellites to multiple UTC Julian dates.

Parameters:
  • satrec (SatRec) – Batched SatRec from tles_to_satrec() with leading dimension n_sat.

  • times_jd (Array) – 1-D array of UTC Julian dates, shape (n_times,).

Returns:

Positions in GCRF, shape (n_sat, n_times, 3) in km. v_gcrf: Velocities in GCRF, shape (n_sat, n_times, 3) in km/s.

Return type:

r_gcrf

Data Structures

class sgp4jax.SatRec(bstar: Array, ecco: Array, argpo: Array, inclo: Array, mo: Array, no_kozai: Array, nodeo: Array, ndot: Array, nddot: Array, j2: Array, j3: Array, j4: Array, j3oj2: Array, xke: Array, mu: Array, radiusearthkm: Array, tumin: Array, jdsatepoch: Array, jdsatepochF: Array, no_unkozai: Array, a: Array, alta: Array, altp: Array, con41: Array, cc1: Array, cc4: Array, cc5: Array, d2: Array, d3: Array, d4: Array, delmo: Array, eta: Array, argpdot: Array, omgcof: Array, sinmao: Array, t2cof: Array, t3cof: Array, t4cof: Array, t5cof: Array, x1mth2: Array, x7thm1: Array, mdot: Array, nodedot: Array, xlcof: Array, xmcof: Array, nodecf: Array, aycof: Array, gsto: Array, d2201: Array, d2211: Array, d3210: Array, d3222: Array, d4410: Array, d4422: Array, d5220: Array, d5232: Array, d5421: Array, d5433: Array, dedt: Array, del1: Array, del2: Array, del3: Array, didt: Array, dmdt: Array, dnodt: Array, domdt: Array, e3: Array, ee2: Array, peo: Array, pgho: Array, pho: Array, pinco: Array, plo: Array, se2: Array, se3: Array, sgh2: Array, sgh3: Array, sgh4: Array, sh2: Array, sh3: Array, si2: Array, si3: Array, sl2: Array, sl3: Array, sl4: Array, xfact: Array, xgh2: Array, xgh3: Array, xgh4: Array, xh2: Array, xh3: Array, xi2: Array, xi3: Array, xl2: Array, xl3: Array, xl4: Array, xlamo: Array, xli: Array, xni: Array, zmol: Array, zmos: Array, atime: Array, method: Array, isimp: Array, irez: Array)

JAX-compatible satellite record.

All fields are jnp.ndarray scalars (float64). String flags are encoded as floats:

  • method: 0.0 = near-earth, 1.0 = deep-space

  • isimp: 0.0 = full perturbations, 1.0 = simplified

  • irez: 0.0 = no resonance, 1.0 = synchronous, 2.0 = half-day

bstar: Array

Alias for field number 0

ecco: Array

Alias for field number 1

argpo: Array

Alias for field number 2

inclo: Array

Alias for field number 3

mo: Array

Alias for field number 4

no_kozai: Array

Alias for field number 5

nodeo: Array

Alias for field number 6

ndot: Array

Alias for field number 7

nddot: Array

Alias for field number 8

j2: Array

Alias for field number 9

j3: Array

Alias for field number 10

j4: Array

Alias for field number 11

j3oj2: Array

Alias for field number 12

xke: Array

Alias for field number 13

mu: Array

Alias for field number 14

radiusearthkm: Array

Alias for field number 15

tumin: Array

Alias for field number 16

jdsatepoch: Array

Alias for field number 17

jdsatepochF: Array

Alias for field number 18

no_unkozai: Array

Alias for field number 19

a: Array

Alias for field number 20

alta: Array

Alias for field number 21

altp: Array

Alias for field number 22

con41: Array

Alias for field number 23

cc1: Array

Alias for field number 24

cc4: Array

Alias for field number 25

cc5: Array

Alias for field number 26

d2: Array

Alias for field number 27

d3: Array

Alias for field number 28

d4: Array

Alias for field number 29

delmo: Array

Alias for field number 30

eta: Array

Alias for field number 31

argpdot: Array

Alias for field number 32

omgcof: Array

Alias for field number 33

sinmao: Array

Alias for field number 34

t2cof: Array

Alias for field number 35

t3cof: Array

Alias for field number 36

t4cof: Array

Alias for field number 37

t5cof: Array

Alias for field number 38

x1mth2: Array

Alias for field number 39

x7thm1: Array

Alias for field number 40

mdot: Array

Alias for field number 41

nodedot: Array

Alias for field number 42

xlcof: Array

Alias for field number 43

xmcof: Array

Alias for field number 44

nodecf: Array

Alias for field number 45

aycof: Array

Alias for field number 46

gsto: Array

Alias for field number 47

d2201: Array

Alias for field number 48

d2211: Array

Alias for field number 49

d3210: Array

Alias for field number 50

d3222: Array

Alias for field number 51

d4410: Array

Alias for field number 52

d4422: Array

Alias for field number 53

d5220: Array

Alias for field number 54

d5232: Array

Alias for field number 55

d5421: Array

Alias for field number 56

d5433: Array

Alias for field number 57

dedt: Array

Alias for field number 58

del1: Array

Alias for field number 59

del2: Array

Alias for field number 60

del3: Array

Alias for field number 61

didt: Array

Alias for field number 62

dmdt: Array

Alias for field number 63

dnodt: Array

Alias for field number 64

domdt: Array

Alias for field number 65

e3: Array

Alias for field number 66

ee2: Array

Alias for field number 67

peo: Array

Alias for field number 68

pgho: Array

Alias for field number 69

pho: Array

Alias for field number 70

pinco: Array

Alias for field number 71

plo: Array

Alias for field number 72

se2: Array

Alias for field number 73

se3: Array

Alias for field number 74

sgh2: Array

Alias for field number 75

sgh3: Array

Alias for field number 76

sgh4: Array

Alias for field number 77

sh2: Array

Alias for field number 78

sh3: Array

Alias for field number 79

si2: Array

Alias for field number 80

si3: Array

Alias for field number 81

sl2: Array

Alias for field number 82

sl3: Array

Alias for field number 83

sl4: Array

Alias for field number 84

xfact: Array

Alias for field number 85

xgh2: Array

Alias for field number 86

xgh3: Array

Alias for field number 87

xgh4: Array

Alias for field number 88

xh2: Array

Alias for field number 89

xh3: Array

Alias for field number 90

xi2: Array

Alias for field number 91

xi3: Array

Alias for field number 92

xl2: Array

Alias for field number 93

xl3: Array

Alias for field number 94

xl4: Array

Alias for field number 95

xlamo: Array

Alias for field number 96

xli: Array

Alias for field number 97

xni: Array

Alias for field number 98

zmol: Array

Alias for field number 99

zmos: Array

Alias for field number 100

atime: Array

Alias for field number 101

method: Array

Alias for field number 102

isimp: Array

Alias for field number 103

irez: Array

Alias for field number 104

sgp4jax.make_satrec(**kwargs)

Create a SatRec with defaults of 0.0 for unspecified fields.

Return type:

SatRec

Gravity Constants

sgp4jax.WGS84 = (13.446851082044981, 398600.5, 6378.137, 0.07436685316871385, 0.00108262998905, -2.53215306e-06, -1.61098761e-06, -0.0023388905587420003)

GravityConstants(tumin, mu, radiusearthkm, xke, j2, j3, j4, j3oj2)

sgp4jax.WGS72 = (13.446839696959309, 398600.8, 6378.135, 0.07436691613317342, 0.001082616, -2.53881e-06, -1.65597e-06, -0.002345069720011528)

GravityConstants(tumin, mu, radiusearthkm, xke, j2, j3, j4, j3oj2)

sgp4jax.WGS72OLD = (13.446839702957643, 398600.79964, 6378.135, 0.0743669161, 0.001082616, -2.53881e-06, -1.65597e-06, -0.002345069720011528)

GravityConstants(tumin, mu, radiusearthkm, xke, j2, j3, j4, j3oj2)