Skip to main content

Python client for the TART catalogue ephemerides endpoint

Project description

TART Catalogue Python Client

Fetches TLE data from the catalogue server and computes satellite positions in ECEF, celestial (RA/Dec), or horizontal (Az/El) coordinates.

Setup

uv sync

CLI Usage

# ECEF positions (default)
uv run python -m tart_client.cli ecef

# Celestial (RA/Dec) positions
uv run python -m tart_client.cli celestial

# Custom server and date
uv run python -m tart_client.cli ecef \
  --url http://localhost:8876 \
  --date 2026-06-16T12:00:00Z

# Benchmark (default 1000 queries over last week)
uv run python -m tart_client.cli benchmark 5000

Set TART_CATALOGUE_URL to avoid repeating --url:

export TART_CATALOGUE_URL=http://localhost:8876
uv run python -m tart_client.cli celestial

Library API

from tart_client import CatalogueClient

client = CatalogueClient()  # defaults to https://tart.elec.ac.nz/catalog
# Or: CatalogueClient(base_url="http://localhost:8876")

Fetch raw TLEs

tles = client.fetch_tles()
# Returns: [{"name": "...", "line1": "...", "line2": "..."}, ...]

ECEF positions

positions = client.ecef_positions()

Returns Earth-Centered Earth-Fixed coordinates:

[
  {
    "name": "GPS BIIR-2  (PRN 13)",
    "ecef_km": [12345.678, -23456.789, 3456.78],
    "velocity_km_s": [1.234, -2.345, 5.678]
  }
]

Transform: SGP4 → TEME → rotate by −GMST → ECEF.

Celestial positions (RA/Dec)

positions = client.celestial_positions()

Derived from ECEF. Returns ICRS right ascension and declination:

[
  {
    "name": "GPS BIIR-2  (PRN 13)",
    "ra_hours": 12.345678,
    "dec_degrees": -45.678901,
    "distance_km": 26500.0
  }
]

Transform: ECEF → ITRS → ICRS (via astropy).

Horizontal positions (Az/El)

positions = client.horizontal_positions(
    lat=-45.87,     # observer latitude (degrees)
    lon=170.60,     # observer longitude (degrees)
    alt=100.0,      # observer altitude (meters)
)

Derived from ECEF. Returns topocentric azimuth and elevation:

[
  {
    "name": "GPS BIIR-2  (PRN 13)",
    "azimuth_deg": 45.123456,
    "elevation_deg": 30.654321,
    "range_km": 20200.123
  }
]

Transform: ECEF → observer-relative ENU → Az/El (WGS84 ellipsoid).

Fast satellite count

count = client.count_satellites()
# Returns: number of TLE records (no propagation)

Caching

TLE data is cached in ~/.cache/tart-catalogue/:

  • Nearest-match: any cached entry within 12 hours of the requested time is reused
  • LRU eviction: oldest 100+ entries are removed
  • In-memory: parsed SGP4 satellite objects are cached per cache key to avoid re-parsing TLE lines

Server fetch requests are logged to stderr with the request datetime.

Coordinate transforms

Method Input Frame Output Frame Transform
ecef_positions TEME (SGP4) ITRS (ECEF) Rotate by −GMST
celestial_positions ITRS (ECEF) ICRS (RA/Dec) astropy ITRS→ICRS
horizontal_positions ITRS (ECEF) ENU → Az/El WGS84 geodetic + rotation

Testing

uv run pytest tart_client/ -v

Tests validate against astropy-generated reference vectors in test-vectors/test_vectors.json.

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

tart_catalogue_client-0.4.0.tar.gz (39.8 kB view details)

Uploaded Source

Built Distribution

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

tart_catalogue_client-0.4.0-py3-none-any.whl (8.6 kB view details)

Uploaded Python 3

File details

Details for the file tart_catalogue_client-0.4.0.tar.gz.

File metadata

  • Download URL: tart_catalogue_client-0.4.0.tar.gz
  • Upload date:
  • Size: 39.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.23 {"installer":{"name":"uv","version":"0.11.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for tart_catalogue_client-0.4.0.tar.gz
Algorithm Hash digest
SHA256 2268aeb2fb333b3cbc18851441e60cf5cd32ed3e63315847a62452fbf5608b91
MD5 c51d8e92324ccd96aba86bb6b31e0495
BLAKE2b-256 2709c899e84e097618e6ecab41c36eab32236a8438f703ecaebf35c071f623c2

See more details on using hashes here.

File details

Details for the file tart_catalogue_client-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: tart_catalogue_client-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 8.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.23 {"installer":{"name":"uv","version":"0.11.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for tart_catalogue_client-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1a82be6ba51f83b2df693fe2b65e6955408c9f0c472bc56b64ab9c11eee57851
MD5 5f105536c58cdecc3e37a3177339bb92
BLAKE2b-256 012badeb7cacf4ba36f8e6f6b81f01966d1c357a7f94f68f181547957ad6ceca

See more details on using hashes here.

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