Skip to main content

Python bindings for the Sidereon GNSS positioning engine (SP3 loading and SPP/RTK/PPP solves)

Project description

sidereon

GNSS and astrodynamics for Python, with answers you can trust.

sidereon is the Python interface to the sidereon engine: a single GNSS and astrodynamics core, written in Rust, exposed here as an idiomatic Python package. You get orbit propagation, precise positioning, frames and time, ephemeris handling, and format parsing through plain Python objects and numpy arrays. The engine is reference-validated (SGP4 is bit-exact to Vallado's implementation; frames and time check against Skyfield and IERS; the positioning stack checks against IGS products), so the numbers match the sources the field already trusts.

The Rust core is compiled into the wheel and linked statically, so the package is fast and the only runtime dependency is numpy. There is no separate native install.

Install

pip install sidereon
import sidereon
print(sidereon.__version__)

Example: where is the ISS in the sky right now?

No data files and no setup: give it a two-line element set and a ground station, and ask for the look angles. Everything that takes time takes unix microseconds (int64) and arrays propagate in one call.

import numpy as np
import sidereon

tle = sidereon.Tle(
    "1 25544U 98067A   24001.50000000  .00016717  00000-0  10270-3 0  9009",
    "2 25544  51.6400 208.8657 0002644 250.3037 109.7782 15.49560812999990",
)
station = sidereon.GroundStation(latitude_deg=51.5, longitude_deg=-0.1, altitude_m=10.0)

# Epochs are unix microseconds (int64); arrays propagate in one call.
epochs_us = np.array([1_704_110_400_000_000], dtype=np.int64)
look = tle.look_angles(station, epochs_us)
print(look.azimuth_deg, look.elevation_deg, look.range_km)

Tle also gives you propagate() (TEME state arcs as numpy arrays) and find_passes() (rise/set/peak over a window). The positioning side has the same shape: a typed config in, a result object with numpy positions and scalar attributes out.

import sidereon

sp3 = sidereon.load_sp3(open("igs_product.sp3", "rb").read())

config = sidereon.SppConfig(
    observations=[
        sidereon.SppObservation("G08", 23_825_519.8),  # PRN, pseudorange (m)
        sidereon.SppObservation("G10", 22_717_690.1),
        # ...more satellites
    ],
    t_rx_j2000_s=646_272_000.0,
    t_rx_second_of_day_s=43_200.0,
    day_of_year=176.5,
    initial_guess=[4_500_000, 500_000, 4_500_000, 0.0],
    corrections=sidereon.SppCorrections(ionosphere=True, troposphere=True),
    with_geodetic=True,
)

solution = sidereon.solve_spp(sp3, config)
print(solution.position)     # numpy [x, y, z] ECEF metres
print(solution.rx_clock_s)   # receiver clock bias, seconds

Capabilities

The Python package mirrors the full breadth of the engine.

  • Orbit propagation: SGP4/SDP4 from TLE/OMM, numerical propagation with atmospheric drag and orbital-decay estimation, batch and constellation arcs, pass prediction, look angles, and coverage analysis.
  • Orbital mechanics: classical, equinoctial, and modified equinoctial elements, anomaly conversions and Kepler propagation, Lambert transfers, initial orbit determination (IOD), and relative motion in RIC/RTN/LVLH frames with Clohessy-Wiltshire propagation.
  • GNSS positioning: single-point positioning (SPP), RTK (float and fixed), PPP (float and fixed), DGNSS, a robust solve driver with RAIM fault detection and exclusion (FDE), and DOP.
  • GNSS corrections and products: SBAS and RTCM SSR corrections applied to broadcast ephemeris, Bias-SINEX code and phase biases (DCB/OSB), Klobuchar and NeQuick-G ionosphere, IONEX maps, and troposphere models.
  • Ephemeris and time: broadcast ephemeris and precise SP3 products, JPL SPK (DAF/.bsp) kernels, uniform satellite-state sampling across broadcast and precise sources, scale-aware time (UTC/TT/TDB/UT1/GPS), and Earth orientation parameters (EOP).
  • Geometry and events: reference frames, geodetic and ECEF conversions, look angles, eclipse, conjunction screening with collision probability, and angular geometry (separation, position angle, phase angle, beta angle).
  • Observation and almanac: apparent places for the Sun, Moon, and any SPK body (astrometric and apparent RA/Dec plus az/el, with refraction and polar motion), sub-solar and sub-observer points, the terminator, parallactic angle, satellite visual magnitude, moonrise/moonset, seasons, moon phases, planetary events, meridian transits, and lunar and solar eclipses.
  • Terrain: DTED elevation lookup and geoid (EGM96) height conversion.
  • RF: link budget (FSPL, EIRP, C/N0, antenna gain).
  • Formats: parse and serialize TLE/OMM, CCSDS OEM/OPM/CDM, RINEX, CRINEX, SP3, IONEX, ANTEX, Bias-SINEX, SBAS logs, and RTCM.
  • Data acquisition: the sidereon.data module downloads and caches GNSS products (SP3 and IONEX from IGS/MGEX analysis centers, including merged multi-center SP3) and DTED terrain tiles.

The binding adds no modeling of its own: every result is exactly what the engine computes, returned as numpy arrays, typed objects, and real Python exceptions (sidereon.SidereonError and friends). Full signatures live in the bundled type stubs (sidereon/__init__.pyi).

One engine, every language

sidereon is one validated core with first-class interfaces, so the numbers are the same everywhere:

See the live demo and docs at sidereon.dev.

Building from source

For contributors: pip install maturin, then maturin develop from the repo. Run the tests with pytest.

License

MIT.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sidereon-0.11.1.tar.gz (1.1 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

sidereon-0.11.1-cp39-abi3-win_amd64.whl (5.0 MB view details)

Uploaded CPython 3.9+Windows x86-64

sidereon-0.11.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.5 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.17+ x86-64

sidereon-0.11.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (5.5 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.17+ ARM64

sidereon-0.11.1-cp39-abi3-macosx_11_0_arm64.whl (5.2 MB view details)

Uploaded CPython 3.9+macOS 11.0+ ARM64

sidereon-0.11.1-cp39-abi3-macosx_10_12_x86_64.whl (5.4 MB view details)

Uploaded CPython 3.9+macOS 10.12+ x86-64

File details

Details for the file sidereon-0.11.1.tar.gz.

File metadata

  • Download URL: sidereon-0.11.1.tar.gz
  • Upload date:
  • Size: 1.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for sidereon-0.11.1.tar.gz
Algorithm Hash digest
SHA256 72ac20f3be56e13e7bb0b648bd6b0a5f2eb9c152bfdd7a8528396ed046950c93
MD5 19d088c38da82b4155d56aeaf75927bb
BLAKE2b-256 c9da38e8b283756b58484a7d4b821de3d1d0f821b03c065912adaaa78edaeff5

See more details on using hashes here.

Provenance

The following attestation bundles were made for sidereon-0.11.1.tar.gz:

Publisher: release.yml on neilberkman/sidereon-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sidereon-0.11.1-cp39-abi3-win_amd64.whl.

File metadata

  • Download URL: sidereon-0.11.1-cp39-abi3-win_amd64.whl
  • Upload date:
  • Size: 5.0 MB
  • Tags: CPython 3.9+, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for sidereon-0.11.1-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 4de9ee80603e274fc83084a5b1549bfbf5596e7ac6057f2952d3b43081cb83ba
MD5 707ef16c5980e56ee0ca75ff77cef2cb
BLAKE2b-256 c195ddd3795f216b55be956c69af434153d9cc61811c0986cf95574acc5b906f

See more details on using hashes here.

Provenance

The following attestation bundles were made for sidereon-0.11.1-cp39-abi3-win_amd64.whl:

Publisher: release.yml on neilberkman/sidereon-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sidereon-0.11.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for sidereon-0.11.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1c8c93667c2a25e0821961cf683ef8df4dd0d309c47f1b6e6c4c62f59e297a0a
MD5 358163ed371c4d9bd3166d244abbc723
BLAKE2b-256 eb5aaa4f0deddfcb407d2ddc4cea894d5e9d35a46cb26f68966ae8fbff5bec9d

See more details on using hashes here.

Provenance

The following attestation bundles were made for sidereon-0.11.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on neilberkman/sidereon-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sidereon-0.11.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for sidereon-0.11.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c06dc6d9c946ee5fbb4bda3130233b9b1515277304d2cef9e335fbe634776776
MD5 5e3763ce442af2d9a145af393f03e7e6
BLAKE2b-256 4c5311684f4251abddf77f3f1627d8af8b37810b6dd1dcf331ec9bea047e87e2

See more details on using hashes here.

Provenance

The following attestation bundles were made for sidereon-0.11.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on neilberkman/sidereon-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sidereon-0.11.1-cp39-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for sidereon-0.11.1-cp39-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 56936c0e62e6ab6e56de79f98d52fea3539e5f79ccf95bce1995988d3254b636
MD5 9c0ca7167659b797a1e4e910b1c1d82c
BLAKE2b-256 eba8647d6db61212b23ba2f544716d3a62941aae9c4b2f6acdd9f4bfd243a101

See more details on using hashes here.

Provenance

The following attestation bundles were made for sidereon-0.11.1-cp39-abi3-macosx_11_0_arm64.whl:

Publisher: release.yml on neilberkman/sidereon-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sidereon-0.11.1-cp39-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for sidereon-0.11.1-cp39-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 9f3b9cc5942e2c7d3b449865e00860889b92f346669266e90821501cf7a8ae39
MD5 2ad6de7cff1170cf329106daae129821
BLAKE2b-256 6a47ee6551790fc824569a2ba57808c8f8afd173a83e448a817c27112c2b4da4

See more details on using hashes here.

Provenance

The following attestation bundles were made for sidereon-0.11.1-cp39-abi3-macosx_10_12_x86_64.whl:

Publisher: release.yml on neilberkman/sidereon-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page