Skip to content
llnlPublic

About

A Python package allowing for fast and precise orbital modeling.

Topics

Resources

Code of conduct

Contributing

Stars

78 stars

Watchers

3 watching

Forks

Latest commit

 

History

175 Commits

Folders and files

Repository files navigation

SSAPy - Space Situational Awareness for Python

ci_badge docs_badge codecov_badge joss_badge pypi_badge

SSAPy is a flexible, physics-based orbital modeling and analysis tool for orbits spanning from low-Earth orbit into the cislunar regime.

SSAPy provides physics-based orbital modeling and analysis for space-domain applications.

Ephemerides, gravity models, and textures install automatically from the ssa-data-* packages; pip install "llnl-ssapy[all-data]" adds the propulsion and benchmark data sets.

SSAPy includes:

  • Ability to define satellite parameters (area, mass, radiation and drag coefficients, etc.)
  • Support for multiple orbit representations and input types, including TLE-based initialization and Keplerian, equinoctial, and Kozai mean Keplerian elements
  • Fully customizable analytic force propagation models, including:
    • Earth gravity models (WGS84, EGM84, EGM96, EGM2008)
    • Lunar gravity models (point source and harmonic)
    • Radiation pressure (Earth and solar)
    • Forces for planets out to Neptune
    • Atmospheric drag models
    • Maneuvering with user-defined burn profiles
  • Multiple integrators, including SGP4, Runge-Kutta (4, 8, and 7/8), SciPy, Keplerian, and Taylor series methods
  • User-definable timesteps and orbit information retrieval times, allowing queries for quantities of interest such as state vectors, TLEs, Keplerian elements, periapsis, apoapsis, specific angular momentum, and more
  • Ground- and space-based observer models
  • Lighting and visibility condition analysis
  • Multiple-hypothesis tracking (MHT) UCT linker
  • Vectorized computations using array broadcasting for efficient execution and easy deployment on HPC systems
  • Short-arc probabilistic orbit determination methods
  • Conjunction probability estimation
  • Built-in uncertainty quantification
  • Monte Carlo sampling, particle-based uncertainty representations, and track linking/model selection
  • Support for multiple coordinate frames and coordinate transformations, including GCRF, IERS, GCRS Cartesian, TEME Cartesian, RA/Dec, NTW, zenith/azimuth, apparent positions, and orthogonal tangent plane coordinates

Installation

For installation details, see the Installing SSAPy section of the documentation.

Strict dependencies

The following Python packages are installed automatically when you install SSAPy:

Documentation

The documentation is hosted at:

https://software.llnl.gov/SSAPy/

The API documentation may also be explored interactively:

python3
import ssapy
help(ssapy)

Contributing

Contributing to SSAPy is straightforward. Please open a pull request targeting the main branch of the SSAPy repository.

Your PR must pass SSAPy's required CI checks. For local testing guidance, documentation builds, and Git workflow tips, see the Contribution Guide.

SSAPy's main branch contains the latest development work.

For six-degree-of-freedom (6-DOF) propagation, visualization, and mission-level workflows, see the Space Situational Awareness Toolkit (SSATK).

Releases

For stable installations, we recommend installing the published llnl-ssapy package from PyPI or using one of SSAPy's versioned source tags.

Code of Conduct

Please note that SSAPy has a Code of Conduct. By participating in the SSAPy community, you agree to abide by its rules.

Authors

SSAPy was developed with support from Lawrence Livermore National Laboratory's (LLNL) Laboratory Directed Research and Development (LDRD) Program under projects 19-SI-004 and 22-ERD-054, by the following individuals. For software citation order and metadata, use CITATION.cff.

Many thanks go to SSAPy's additional contributors.

Citing SSAPy

If you use SSAPy in your research, please cite the software using the repository metadata in CITATION.cff. On GitHub, use the "Cite this repository" button to copy the citation in APA or BibTeX format.

The related JOSS paper may also be cited separately:

  • Meyers, J. E., Schneider, M. D., Ebert, J. T., Schlafly, E. F., Yeager, T., Perloff, A., Merl, D., Lifset, N., Bernstein, J., Dawson, W. A., Golovich, N., Higgins, D., McGill, P., Miller, C., & Pruett, K. (2025). SSAPy - Space Situational Awareness for Python. Journal of Open Source Software, 10(111), 8147. doi:10.21105/joss.08147

BibTeX:

@article{Meyers2025,
  doi       = {10.21105/joss.08147},
  url       = {https://doi.org/10.21105/joss.08147},
  year      = {2025},
  publisher = {The Open Journal},
  volume    = {10},
  number    = {111},
  pages     = {8147},
  author    = {Meyers, Joshua E. and Schneider, Michael D. and Ebert, Julia T. and Schlafly, Edward F. and Yeager, Travis and Perloff, Alexx and Merl, Daniel and Lifset, Noah and Bernstein, Jason and Dawson, William A. and Golovich, Nathan and Higgins, Denvir and McGill, Peter and Miller, Caleb and Pruett, Kerianne},
  title     = {SSAPy - Space Situational Awareness for Python},
  journal   = {Journal of Open Source Software}
}

You may also cite the following publications (click here for BibTeX entries):

  • Yeager, T., Pruett, K., & Schneider, M. (2022). Unaided Dynamical Orbit Stability in the Cislunar Regime. Poster presentation, Cislunar Security Conference, USA.
  • Yeager, T., Pruett, K., & Schneider, M. (2023). Long-term N-body Stability in Cislunar Space. Poster presentation, Advanced Maui Optical and Space Surveillance (AMOS) Technologies Conference, USA.
  • Yeager, T., Pruett, K., & Schneider, M. (2023, September). Long-term N-body Stability in Cislunar Space. In S. Ryan (Ed.), Proceedings of the Advanced Maui Optical and Space Surveillance (AMOS) Technologies Conference (p. 208). Retrieved from https://amostech.com/TechnicalPapers/2023/Poster/Yeager.pdf

License

SSAPy is distributed under the terms of the MIT license. All new contributions must be made under the MIT license.

See the LICENSE and NOTICE files for details.

SPDX-License-Identifier: MIT

LLNL-CODE-862420

Documentation Inspiration

The structure and organization of this repository's documentation were inspired by the excellent design and layout of the Coffea project.

About

A Python package allowing for fast and precise orbital modeling.

Topics

Resources

Code of conduct

Contributing

Stars

78 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages