SSAPy is a flexible, physics-based orbital modeling and analysis tool for orbits spanning from low-Earth orbit into the cislunar regime.
SSAPy retains the core coordinate, observer-geometry, and propagation routines. For higher-level utilities, convenience workflows, plotting tools, workflow wrappers around coordinate conversions, Lambertian magnitude / brightness calculations, and related extensions, see the companion project SSAPy-Toolkit.
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
SSAPy-Toolkit
SSAPy provides the core propagation and modeling engine. Many higher-level, analysis-ready capabilities built on top of it live in the companion project SSAPy-Toolkit (sometimes abbreviated SSATK), including:
Higher-level utilities and convenience workflows that wrap common SSAPy tasks
Plotting tools for orbit and analysis visualization
Workflow-level wrappers around SSAPy’s coordinate and observer-geometry routines
Lambertian magnitude / brightness calculations
Additional related extensions
If your work centers on plotting, dashboards, convenience utilities, or higher-level workflows, SSAPy-Toolkit is often the best place to start — and the natural home for contributions of that kind.
Installation
For installation details, see the Installing SSAPy section of the documentation.
If you are looking for higher-level utilities or plotting-oriented workflows, you may also want to install or explore SSAPy-Toolkit.
Strict dependencies
Python (3.10+)
The following Python packages are installed automatically when you install SSAPy:
Earth/Moon mesh helpers and other visualization tools are maintained in SSAPy-Toolkit.
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.
For work that primarily concerns plotting, dashboards, convenience utilities, or higher-level workflows, please also consider whether the contribution belongs in the companion repository SSAPy-Toolkit.
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.
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.
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.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file llnl_ssapy-1.1.9.tar.gz.
File metadata
- Download URL: llnl_ssapy-1.1.9.tar.gz
- Upload date:
- Size: 254.6 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b7dcb03cc39fc797420e97af169a5ebcf966e0b7e8ffd2d7720e6ca2a62b43dd
|
|
| MD5 |
2aefc501cc9af9be856fe0b942e87d80
|
|
| BLAKE2b-256 |
7dafe28148b7b02592da98e3291f283570c5138d3ec2d4bcbf39dfa89bf46e24
|
Provenance
The following attestation bundles were made for llnl_ssapy-1.1.9.tar.gz:
Publisher:
python-publish.yml on llnl/SSAPy
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
llnl_ssapy-1.1.9.tar.gz -
Subject digest:
b7dcb03cc39fc797420e97af169a5ebcf966e0b7e8ffd2d7720e6ca2a62b43dd - Sigstore transparency entry: 2622745492
- Sigstore integration time:
-
Permalink:
llnl/SSAPy@1ecf25eae7976dcc8fa84c4b3fd0beff4e163485 -
Branch / Tag:
refs/tags/v1.1.9 - Owner: https://github.com/llnl
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@1ecf25eae7976dcc8fa84c4b3fd0beff4e163485 -
Trigger Event:
push
-
Statement type: