Releases: ATTron/astroz
Releases · ATTron/astroz
v0.7.1
v0.7.0
What's New
- python-sgp4 interoperablity: astroz is now a drop in replacement for python-sgp4. Simply change your import line to
from astrozand get a 2x speedup! Follow the full migration guide for even more gains up to 100x compared to sgp4.
What's Changed
Full Changelog: v0.6.1...v0.7.0
v0.6.1
v0.6.0
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
- conjunction screening returns incorrect tuple value by @ATTron in #63
- update sgp4 example to use propagateN by @arrufat in #66
- Update zignal dependency by @arrufat in #65
- faster conjunction by @ATTron in #64
Full Changelog: v0.5.0...v0.6.0
v0.5.0
v0.4.4
v0.4.3
v0.4.2
v0.4.1
v0.4.0
Biggest Change
- Add SGP4 prop and offer C API / python bindings into it
- This implementation is the fastest open source option for SGP4 orbit prop
What's Changed
- PD-51: LSK kernel parsing by @ATTron in #35
- PD-16: fix file readers by @ATTron in #36
- fix tcp timing bugs introduced by @ATTron in #38
- fix issues with new Io package by @ATTron in #40
- clean up some formatting by @ATTron in #39
- io changes by @ATTron in #41
- bump zignal to fix breaking FITS tests by @ATTron in #42
- make things a little less choatic by @ATTron in #43
- clean up imports by @ATTron in #44
- spg4 prop by @ATTron in #45
- refactor how orbit prop is designed by @ATTron in #46
- maneuver updates by @ATTron in #47
- C API + Python Bindings by @ATTron in #48
- package python bindings Part 1 by @ATTron in #49
- spg4 with python and benchmarks by @ATTron in #50
Full Changelog: v0.3.0...v0.4.0