missiontools: Space Mission Analysis in Python
missiontools is an MIT-licensed framework for space mission analysis tasks in Python. It is currently focused on Earth-orbiting missions, earth observation (EO) in particular.
Check out the examples to see what you can do with missiontools
Features
missiontools currently supports:
- Analytical propagation using either Keplerian two-body or J2 with secular perturbations.
- Convenience functions for generating sun-synchronous, geostationary, and highly elliptical orbits.
- Access interval computation (spacecraft to ground station, spacecraft to spacecraft)
- Creation of areas of interest (AoIs) for coverage analysis: global, latitude/longitude bounding box, ESRI shapefile.
- Convenience functions for creation of AoIs by country or state/province (eg:
AoI.from_geography('Canada/British Columbia')). Uses the Natural Earth 1:50m dataset. - Computation of space-to-ground coverage including constraints on spacecraft elevation, solar zenith angle (SZA), and field-of-view.
- Flexible condition system using boolean time-domain predicates (currently: sunlight, region, visibility), composable via boolean operations.
- Conic and rectangular (pyramidal) sensor models with optional condition-based gating of coverage activity.
- Selectable spacecraft attitude laws: fixed (LVLH, ECI, ECEF), targeted (spacecraft or ground station), limb (grazing-tangent), custom (user callback).
- Condition-based attitude switching: route between attitude laws using conditions
- Interference analysis between victim and interfering constellations with cumulative interference percentage and ITU threshold overlay.
- Solar panel definition from panel normals and areas
- Solar generation and orbit average power
- Yaw steering for maximum solar generation
- Thermal analysis: faces/normals connected to lumped element thermal model
- Antenna modeling (isotropic, radially symmetric), including antenna pointing modes and ITU-R S.465 reference pattern.
- Dynamic link budget computation including optional ITU-R P.618 weather effects (P.618 requires ITU-RPy).
Possible future features (open an issue if you'd like to see one of these implemented):
- CAD import for solar & thermal
- Self-shadowing for solar/thermal imported from CAD
- Radiative thermal coupling between surface elements imported from CAD
- Variable-rate communications
- Radiation environment definition
Dependencies
- Python 3.13 or later
- numpy
- scipy
- matplotlib
- skyfield
- pyshp
- shapely
- itur
Validation
This project is in early days and is not yet well validated. Do not depend on the outputs for any critical design decisions. If an output looks off, it probably is - please open an issue!
Vibe Coding Disclaimer
This project is my first foray into agentic development. I make the architecture decisions myself and use Claude Code to implement them - generating functions, classes, and tests from my specifications. I review all output and redirect when needed, but I do not generally write the implementation code directly.
Acknowledgements
- Natural Earth for the country/state/province shapefiles
- Claude Sonnet 4.6 & Opus 4.6 for doing the implementation gruntwork
Metadata
Release files for missiontools 0.2.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| missiontools-0.2.3.tar.gz | 1.9 MB | Without provenance | Details for missiontools-0.2.3.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| missiontools-0.2.3-py3-none-any.whl | Python 3 | none | any | Details for missiontools-0.2.3-py3-none-any.whl |
Total release size: 3.7 MB
Release files / missiontools-0.2.3.tar.gz
| Download URL | missiontools-0.2.3.tar.gz |
|---|---|
| Size | 1.9 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e3d9645c85c6a271164e113cc43a285e27eb551a9fa2058515a556fe0151d0d4
|
|
BLAKE2b-256 checksum How to use checksums |
b19d30f5c44300840ed61f001cb4aa78ec99657a32832280fc52c910260b72e0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.12
|
Release files / missiontools-0.2.3-py3-none-any.whl
| Download URL | missiontools-0.2.3-py3-none-any.whl |
|---|---|
| Size | 1.8 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
07b23fbc2a4ffcdee8677af57bdb67f32c7f9dd466cf0b1a8a68d395c49ab52d
|
|
BLAKE2b-256 checksum How to use checksums |
ca638cc282ac741a2772e3767cbdb0aad46ccc97d1634094ce9f8774be7b7afa
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.12
|
Security for missiontools 0.2.3
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.