Skip to content

v0.6.0

Choose a tag to compare

@ATTron ATTron released this 30 Jan 04:24
· 21 commits to main since this release
0befacd

Breaking Changes

Removed APIs

  • Sgp4 class - Single satellite propagator removed from Python bindings
  • load_constellation() - Backward compatibility alias removed
  • min_distances() - Standalone function removed
  • coarse_screen() - Standalone function removed
  • WGS84 constant - No longer exported

Constellation class changes

  • propagate() method removed from class (now a module-level function)
  • metadata property and with_metadata parameter removed
  • batch_size property removed
  • out parameter for pre-allocated output removed

New API

The Python API is now simplified to two main functions:

  from astroz import Constellation, propagate, screen
  # Parse TLEs once for repeated use
  c = Constellation("starlink")
  # Propagate satellites
  positions = propagate(c, times, start_time=dt, output="ecef")
  positions, velocities = propagate(c, times, velocities=True)
  # Conjunction screening - single target (fastest, fused propagate+screen)
  min_dists, t_indices = screen(c, times, threshold=10.0, target=0)
  # Conjunction screening - all-vs-all
  pairs, t_indices = screen(c, times, threshold=10.0)

Migration Guide

Propagating a constellation:

# Before
c = Constellation("starlink")
positions = c.propagate(times)
# After
c = Constellation("starlink")
positions = propagate(c, times)

Loading a constellation:

# Before
c = load_constellation("starlink")
# After
c = Constellation("starlink")

Conjunction screening:

# Before
positions = c.propagate(times)
pairs = coarse_screen(positions, threshold=10.0)
distances, t_indices = min_distances(positions, pairs)
# After
pairs, t_indices = screen(c, times, threshold=10.0)
Single-target screening:
# Before
positions = c.propagate(times)
pairs = coarse_screen(positions, threshold=10.0)
# ... filter pairs for target ...
# After (faster - fused propagate+screen)
min_dists, t_indices = screen(c, times, threshold=10.0, target=0)

Single satellite propagation:

# Before
sgp4 = Sgp4(tle)
pos, vel = sgp4.propagate(30.0)

# After
positions = propagate(tle_string, [30.0])

What's Changed

Full Changelog: v0.5.0...v0.6.0