Skip to main content

Brahe is a modern satellite dynamics library for research and engineering applications designed to be easy-to-learn, high-performance, and quick-to-deploy. The north-star of the development is enabling users to solve meaningful problems and answer questions quickly, easily, and correctly.

Project description

Brahe

Brahe - Practical Astrodynamics

Docs Tests Crate PyPi License arXiv


Documentation: https://duncaneddy.github.io/brahe/latest

Rust Library Reference: https://docs.rs/crate/brahe/latest

Source Code: https://github.com/duncaneddy/brahe


Brahe

Brahe is a modern satellite dynamics library for research and engineering applications. It is designed to be quick-to-deploy, composable, extensible, and easy-to-learn. The north-star of the development is enabling users to solve meaningful problems quickly and correctly.

Brahe is permissively licensed under an MIT License to enable people to use and build on the work without worrying about licensing restrictions. We want people to be able to stop reinventing the astrodynamics "wheel" because commercial licenses are expensive and open-source options are hard to use.

We try to prioritize making the software library easy to learn, use, and verify. Many astrodynamics libraries are written with many layers of abstraction for flexibility that can make it challenging for new users to understand where the actual logic and algorithms are being executed. Brahe is written in a modern style with an emphasis on code clarity and modularity to make it easier to understand what individual functions are actually doing. This approach has the added benefit of making it easier to verify and validate the correctness of the implementation.

If you do find this useful, please consider starring the repository on GitHub to help increase its visibility. If you're using Brahe for school, research, a commercial endeavour, or flying a mission. I'd love to know about it.

We hope you find Brahe useful for your work!

Going Further

If you want to learn more about how to use the package the documentation is structured in the following way:

  • Learn: Provides short-form documentation of major concepts of the package.
  • Examples: Provides longer-form examples of how-to examples of how to accomplish common tasks.
  • Python API Reference: Provides detailed reference documentation of the Python API.
  • Rust API Reference: Provides detailed reference documentation of the Rust API.

Quick Start

Python

To install the latest release of brahe for Python, simply run:

pip install brahe

You can then import the package in your Python code with:

import brahe as bh

And do something fun like calculate the orbital-period of a satellite in low Earth orbit:

import brahe as bh

# Define the semi-major axis of a low Earth orbit (in meters)
a = bh.constants.R_EARTH + 400e3  # 400 km altitude

# Calculate the orbital period
T = bh.orbital_period(a)

print(f"Orbital Period: {T / 60:.2f} minutes")
# Outputs:
# Orbital Period: 92.56 minutes

or find the when the ISS will next pass overhead:

import brahe as bh

bh.initialize_eop()

# Download ISS TLE and create a propagator
client = bh.celestrak.CelestrakClient()
iss = client.get_sgp_propagator(catnr=25544, step_size=60.0)

# Propagate for 24 hours
epoch_start = iss.epoch
epoch_end = epoch_start + 24 * 3600.0
iss.propagate_to(epoch_end)

# Compute upcoming passes over San Francisco
passes = bh.location_accesses(
    bh.PointLocation(-122.4194, 37.7749, 0.0),  # San Francisco
    iss,
    epoch_start,
    epoch_end,
    bh.ElevationConstraint(min_elevation_deg=10.0),
)
print(f"Number of passes in next 24 hours: {len(passes)}")
# Example Output: Number of passes in next 24 hours: 5

If you want to see more examples of how to use brahe, you can find even more with full source code in the Examples section of the documentation.

Citing Brahe

If you use Brahe in your work, please cite the following paper:

@article{eddy2026brahe,
      title={{Brahe: A Modern Astrodynamics Library for Research and Engineering Applications}}, 
      author={Duncan Eddy and Mykel J. Kochenderfer},
      year={2026},
      eprint={2601.06452},
      archivePrefix={arXiv},
      primaryClass={astro-ph.IM},
      url={https://arxiv.org/abs/2601.06452}, 
}

Versioning

[!WARNING] Brahe generally follows SemVer. New patch versions should be rare. Public facing APIs should not significantly change, though may still change, especially for new features that are still being refined based on user feedback. We want to avoid the forever "0.x" versioning trap that many Rust and scientific software projects fall into, which can deter users from adopting the software.

If you need guaranteed stability you should pin your project to a specific major.minor.patch version (e.g., 1.2.3) rather than using a floating version specifier (e.g., ^1.2.0 or >=1.2.0).

License

The project is licensed under the MIT License - see the LICENSE file for details.

We want to make it easy for people to use and build on the work without worrying about licensing restrictions!

Contributing

If you find a bug, have a feature request, want to contribute, please open an issue or a pull request on the GitHub repository. Contributions are welcome and encouraged! If you see something missing, but don't know how to start contributing, please open an issue and we can discuss it. We are building software to help everyone on this planet explore the universe. We encourage you to bring your unique perspective to help make us stronger. We appreciate contributions from everyone, no prior space experience is needed to participate.

AI Usage

The development of Brahe has roots in 2014 when I first started writing astrodynamics software for my PhD. The main algorithms and code structure evolved over the years based on my own experience applying the software to both research problems and operational space missions. The core functionality of the library (time handling, reference frames, reference frame transformations, coordinate transformations) were all developed before the usage of AI tools. AI tools have since been sparingly adopted to help with improving and expanding capabilities that were on the nice-to-have feature list. They have also been used to help with writing documentation and improve code coverage. However, all results and outputs are manually reviewed, run, tested, and verified manually before being merged into the main branch.

For new contributions, we allow the use of AI-assited coding, however we expect that PRs will be manually reviewed and tested before being submitted and that all PRs follow the same standards of code clarity, modularity, and correctness as the rest of the codebase.

Sponsors

We are pleased to acknowledge the following sponsors for their support:

Northwood Space

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

brahe-1.3.3.tar.gz (8.2 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

brahe-1.3.3-cp314-cp314-win_amd64.whl (11.0 MB view details)

Uploaded CPython 3.14Windows x86-64

brahe-1.3.3-cp314-cp314-manylinux_2_34_x86_64.whl (11.0 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.34+ x86-64

brahe-1.3.3-cp314-cp314-macosx_11_0_arm64.whl (10.8 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

brahe-1.3.3-cp313-cp313-win_amd64.whl (11.0 MB view details)

Uploaded CPython 3.13Windows x86-64

brahe-1.3.3-cp313-cp313-manylinux_2_34_x86_64.whl (11.0 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ x86-64

brahe-1.3.3-cp313-cp313-macosx_11_0_arm64.whl (10.8 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

brahe-1.3.3-cp312-cp312-win_amd64.whl (11.0 MB view details)

Uploaded CPython 3.12Windows x86-64

brahe-1.3.3-cp312-cp312-manylinux_2_34_x86_64.whl (11.0 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ x86-64

brahe-1.3.3-cp312-cp312-macosx_11_0_arm64.whl (10.8 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

brahe-1.3.3-cp311-cp311-win_amd64.whl (11.0 MB view details)

Uploaded CPython 3.11Windows x86-64

brahe-1.3.3-cp311-cp311-manylinux_2_34_x86_64.whl (11.0 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.34+ x86-64

brahe-1.3.3-cp311-cp311-macosx_11_0_arm64.whl (10.8 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

brahe-1.3.3-cp310-cp310-win_amd64.whl (11.0 MB view details)

Uploaded CPython 3.10Windows x86-64

brahe-1.3.3-cp310-cp310-manylinux_2_34_x86_64.whl (11.0 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.34+ x86-64

brahe-1.3.3-cp310-cp310-macosx_11_0_arm64.whl (10.8 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

Details for the file brahe-1.3.3.tar.gz.

File metadata

  • Download URL: brahe-1.3.3.tar.gz
  • Upload date:
  • Size: 8.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for brahe-1.3.3.tar.gz
Algorithm Hash digest
SHA256 645a0dcc1c5737bd24bebc2c3283d8a8db0ead6a7ae9ef1e9717ba81d31e4a05
MD5 c461213af26b232c0b04a651cace4b73
BLAKE2b-256 d06d5f61e4f1d023c234e3e57c2f3dc25c939c853197b1ee01815c25a4d96cbf

See more details on using hashes here.

Provenance

The following attestation bundles were made for brahe-1.3.3.tar.gz:

Publisher: release.yml on duncaneddy/brahe

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file brahe-1.3.3-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: brahe-1.3.3-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 11.0 MB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for brahe-1.3.3-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 ce1cbde94b94ff557cce7a17609bb735201c8ee851d525e9d26d1fe72dd9cdbc
MD5 4a1cd15285b322871fc4bd7d32df6723
BLAKE2b-256 d772b58b4542dc8de3df1e6d9d8973726c0cc124abdc17d5dcf2194f588ef576

See more details on using hashes here.

Provenance

The following attestation bundles were made for brahe-1.3.3-cp314-cp314-win_amd64.whl:

Publisher: release.yml on duncaneddy/brahe

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file brahe-1.3.3-cp314-cp314-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for brahe-1.3.3-cp314-cp314-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 b93d99b40d25122169ad10c5b93b24a0012ed76b3a7c99e49399969633d6ff9a
MD5 3d51c18f0591d27a8aab953594b30dad
BLAKE2b-256 a47cdf995e31d5ed61a875e1dd7bd675c4b0e1137f01f656b79dd4291fef9c3c

See more details on using hashes here.

Provenance

The following attestation bundles were made for brahe-1.3.3-cp314-cp314-manylinux_2_34_x86_64.whl:

Publisher: release.yml on duncaneddy/brahe

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file brahe-1.3.3-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for brahe-1.3.3-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3b383a34479aedc8ec918481f022b98c704d9cac6acd6cfcb1cc24a04e3816cd
MD5 cd54cf254fd207a5753f42e387c60999
BLAKE2b-256 94caf65c6a3230b5c67d9ba6ce9bd17d4d4f31a1d0f707acff0cd8b6cbb98e77

See more details on using hashes here.

Provenance

The following attestation bundles were made for brahe-1.3.3-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: release.yml on duncaneddy/brahe

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file brahe-1.3.3-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: brahe-1.3.3-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 11.0 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for brahe-1.3.3-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 a0b752740971ee9f707b54bc7f4332a6a9e177c3e0fcde47183d4abb71487c8f
MD5 6479d66797bf55784997d22c17873327
BLAKE2b-256 fb1e03a366d9257bf4cc42e53be529953b455cde8628aa3b7433057f05e54082

See more details on using hashes here.

Provenance

The following attestation bundles were made for brahe-1.3.3-cp313-cp313-win_amd64.whl:

Publisher: release.yml on duncaneddy/brahe

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file brahe-1.3.3-cp313-cp313-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for brahe-1.3.3-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 104cf65e4c511bc94b429483de562941aa31a4dc07db7e7cd172fa3f9ef5d5e3
MD5 2debd6a69e5d341ee0eb49c36a1eaa6f
BLAKE2b-256 331ae43a2247b9929a41a3327a6d5fbf6727f151823a56b4ca5c6476d532ef24

See more details on using hashes here.

Provenance

The following attestation bundles were made for brahe-1.3.3-cp313-cp313-manylinux_2_34_x86_64.whl:

Publisher: release.yml on duncaneddy/brahe

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file brahe-1.3.3-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for brahe-1.3.3-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1897ef923c704227e0a6112ec97e4f43b6e05191636d1846f47531ad994a03bf
MD5 bb5c6cf104dfd6bd63f120f82b113f8e
BLAKE2b-256 f45592325382f341e1e3d1117383a5aebfd919e90c8186bc0545832798bcd880

See more details on using hashes here.

Provenance

The following attestation bundles were made for brahe-1.3.3-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: release.yml on duncaneddy/brahe

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file brahe-1.3.3-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: brahe-1.3.3-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 11.0 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for brahe-1.3.3-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 c0a9a4b53473b5524e89677ca8c40eb91e1c563d41e0560c5fda72c56076a8d2
MD5 bb644be8598ac216bc6c45c343ae321a
BLAKE2b-256 0891cfcb7bdbd09270e339a3d05d1ef1c2f917e846a9735aa7b34bb250d4396e

See more details on using hashes here.

Provenance

The following attestation bundles were made for brahe-1.3.3-cp312-cp312-win_amd64.whl:

Publisher: release.yml on duncaneddy/brahe

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file brahe-1.3.3-cp312-cp312-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for brahe-1.3.3-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 7733c593e98620a9447e3d95faa7e563a3abb89146bc51a9fb5bedf964f6ee60
MD5 97d77b6840e76dba4735dffb06372c28
BLAKE2b-256 0f0da92349823c18951b63b2692ed5b9f9d819da50bc36c2ff19517f5ed94d72

See more details on using hashes here.

Provenance

The following attestation bundles were made for brahe-1.3.3-cp312-cp312-manylinux_2_34_x86_64.whl:

Publisher: release.yml on duncaneddy/brahe

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file brahe-1.3.3-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for brahe-1.3.3-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 05fa5e34bfbcc77109d2797d8ed04a850581bc4072274fb1b600e93bc6f3b03d
MD5 61a335b8ac580d0cea07cd1411d87626
BLAKE2b-256 a1888393e908899707c26c5ce7f297ff9ba631532cd2118c6bd5a97c680619f7

See more details on using hashes here.

Provenance

The following attestation bundles were made for brahe-1.3.3-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: release.yml on duncaneddy/brahe

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file brahe-1.3.3-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: brahe-1.3.3-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 11.0 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for brahe-1.3.3-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 847234f4f28100f95c19e5e416a9a56a0b59a22562d834481c55bf52316bbf2e
MD5 fe69c497705436eece07ae1e662022d8
BLAKE2b-256 8a9a5150ad6a1d392c90ad2abbe9c6aa720457a7146a916979847e016ca29ad3

See more details on using hashes here.

Provenance

The following attestation bundles were made for brahe-1.3.3-cp311-cp311-win_amd64.whl:

Publisher: release.yml on duncaneddy/brahe

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file brahe-1.3.3-cp311-cp311-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for brahe-1.3.3-cp311-cp311-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 94d888d5cc0a9d74bdfa6c2c67912a05c4e42a5f671326a011a3fb665d916724
MD5 27c75bd7b0820b9d2cc3b47cbcac2114
BLAKE2b-256 25182c86ed75733b4e57f163b565e13b6f54a6c57809ba30f816b4c3888fe294

See more details on using hashes here.

Provenance

The following attestation bundles were made for brahe-1.3.3-cp311-cp311-manylinux_2_34_x86_64.whl:

Publisher: release.yml on duncaneddy/brahe

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file brahe-1.3.3-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for brahe-1.3.3-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6ab68c401d18d9c146a03efd53df473a24994e224f72f0ccc5300520e2aedb0c
MD5 2e2419d8a9514b269031854db7837410
BLAKE2b-256 d7fd6e9fe19d761f8669c75039a8ecf12cc368794496e8f33fe445332888a044

See more details on using hashes here.

Provenance

The following attestation bundles were made for brahe-1.3.3-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: release.yml on duncaneddy/brahe

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file brahe-1.3.3-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: brahe-1.3.3-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 11.0 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for brahe-1.3.3-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 f86fbb948c3bb0518461130f1513e51ddeb07af482b910f7d8b1b2e38ac49b31
MD5 e0d05d22a814eb925794253ef1cf582b
BLAKE2b-256 65fd6b7f25df766341bb0fcde8eca13b60665a02677a5aaa5ce7639f7d244059

See more details on using hashes here.

Provenance

The following attestation bundles were made for brahe-1.3.3-cp310-cp310-win_amd64.whl:

Publisher: release.yml on duncaneddy/brahe

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file brahe-1.3.3-cp310-cp310-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for brahe-1.3.3-cp310-cp310-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 abc1efbae00239b73e81c051635e6f3406c4c4a7edc6514ba2cfac2eacd1f19a
MD5 3b52c51646a3a831f26371688a33b653
BLAKE2b-256 32771f295c9a838dd5df9f5e74177939db6163fe172a3bfc2f69685d7b4fa626

See more details on using hashes here.

Provenance

The following attestation bundles were made for brahe-1.3.3-cp310-cp310-manylinux_2_34_x86_64.whl:

Publisher: release.yml on duncaneddy/brahe

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file brahe-1.3.3-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for brahe-1.3.3-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e23632ff61ae998fa912a632481dac0a9a76d93655d204e3fbfb631eca6874b4
MD5 be17a56dcec02f8f7233a8a1d434edc1
BLAKE2b-256 2342f40a976650da07c84e43f6ca020193ebae583b9dd53f117f9278fb690b51

See more details on using hashes here.

Provenance

The following attestation bundles were made for brahe-1.3.3-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: release.yml on duncaneddy/brahe

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page