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.0.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.0-cp314-cp314-win_amd64.whl (11.0 MB view details)

Uploaded CPython 3.14Windows x86-64

brahe-1.3.0-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.0-cp314-cp314-macosx_11_0_arm64.whl (10.8 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

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

Uploaded CPython 3.13Windows x86-64

brahe-1.3.0-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.0-cp313-cp313-macosx_11_0_arm64.whl (10.8 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

brahe-1.3.0-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.0-cp312-cp312-macosx_11_0_arm64.whl (10.8 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.11Windows x86-64

brahe-1.3.0-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.0-cp311-cp311-macosx_11_0_arm64.whl (10.8 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.10Windows x86-64

brahe-1.3.0-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.0-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.0.tar.gz.

File metadata

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

File hashes

Hashes for brahe-1.3.0.tar.gz
Algorithm Hash digest
SHA256 59449f3f3fb2b9102b8a97184ddcbf214acda735a047d67d0c6acc59a6e2b09e
MD5 b2474e1d2ec266e3a588b5708a8c0801
BLAKE2b-256 52630ad09ca8c67a8f1d6a77e1c2c729976af56c6b2a50b9a32e76466e6a5e62

See more details on using hashes here.

Provenance

The following attestation bundles were made for brahe-1.3.0.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.0-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: brahe-1.3.0-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.7

File hashes

Hashes for brahe-1.3.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 78a188e6baf383eacb64b36ee5ea0ba7a40c0d150efc1229e6bf28e25d32d356
MD5 86a31e6248a7c86df7c14313ebe79a8c
BLAKE2b-256 df22277b2fb542d7b34a88f182cd004469912c5c278a2dd176e52997d1ffde29

See more details on using hashes here.

Provenance

The following attestation bundles were made for brahe-1.3.0-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.0-cp314-cp314-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for brahe-1.3.0-cp314-cp314-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 2cf029c82921f97069ad0bf0787e0626dd3f0ce46df01d68d5c43ad21de146ed
MD5 1114ebb75dd3282452d05510287ea06b
BLAKE2b-256 f168f31939c1e4c7a414fb4b0efa246f042ceb9e216ff15b64d60bc32f4f1d2b

See more details on using hashes here.

Provenance

The following attestation bundles were made for brahe-1.3.0-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.0-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for brahe-1.3.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c134e97ffa0421d3802f12dab797a3860849828787cf8d83a5381692b441597f
MD5 7be9f2c40fb65a22412ebe2f13afe0d4
BLAKE2b-256 c2f2707b1e4e5ce48506938658c5a699243f5bfe37d4d9b51d9005c9fb04f854

See more details on using hashes here.

Provenance

The following attestation bundles were made for brahe-1.3.0-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.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: brahe-1.3.0-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.7

File hashes

Hashes for brahe-1.3.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 f2c173ddf44421c872fc771355eb6119c16d0fb5d2f7c7fbb133f07b535f866a
MD5 5d43dd4f0aa26d836d2756a8284444e2
BLAKE2b-256 e8c03cd3414c4062f07255781fe4a7cdae2ae29e782b73363ce1883f95731eca

See more details on using hashes here.

Provenance

The following attestation bundles were made for brahe-1.3.0-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.0-cp313-cp313-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for brahe-1.3.0-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 175b9f8a5a32c1e0147137a11dfa6ff32ff675bd410b27dc28ba3dedc12acab1
MD5 d2114801b8e0907bb8191353d60d44f8
BLAKE2b-256 73cb57025c8c43b14f7f1258b785df9a86bd3e80810339c9db689817873e7a92

See more details on using hashes here.

Provenance

The following attestation bundles were made for brahe-1.3.0-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.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for brahe-1.3.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f79d3c1d3f3be579f118a58de30eb79539110752e1fb6f6da4fbbd28c65a1ee7
MD5 eb867e89f3426afec6b4daf9b6af0168
BLAKE2b-256 2ed07fa2a41a63124af874f87fab7d660575fa3e87d9d9dc3164a29d54fd030f

See more details on using hashes here.

Provenance

The following attestation bundles were made for brahe-1.3.0-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.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: brahe-1.3.0-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.7

File hashes

Hashes for brahe-1.3.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 73f7e43bba7e1d177713d45a35de411158367674887a9997869aafe612d373dc
MD5 bc16dd6886806d4a8778d35848672c1b
BLAKE2b-256 bd9f43f192190423dc95633f368091799af2be7996aa6c9705954211b08af717

See more details on using hashes here.

Provenance

The following attestation bundles were made for brahe-1.3.0-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.0-cp312-cp312-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for brahe-1.3.0-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 0524c574890c59af45b66491e79223a5be67586cfc71f318644ac4e6b530c73a
MD5 454439be5c002d3c68faaa95b6073642
BLAKE2b-256 3d165e2310523f46893169d9218d70a4ad1f28c3200301770c5f6ca7e0ae6317

See more details on using hashes here.

Provenance

The following attestation bundles were made for brahe-1.3.0-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.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for brahe-1.3.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4b2768925e46250401d4032cef0e583a98381bfc2f874973cb9a442f285da9eb
MD5 4a61e2b58fc21726d9eb7c7b3cc4cea5
BLAKE2b-256 5a159563adee028817ce31e0bb7858254cf5af76728994e1b2dccb7720133f38

See more details on using hashes here.

Provenance

The following attestation bundles were made for brahe-1.3.0-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.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: brahe-1.3.0-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.7

File hashes

Hashes for brahe-1.3.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 c10a2ef3ac46af9361aa02194c11c2f3106fbe31fde39b9aceade10bc4f32fab
MD5 28f452032e0c585e0206a72378ab435a
BLAKE2b-256 7337330657c1645adcf7179168a4634836c1460bb2c2a189a44bbae5cc0c0ddd

See more details on using hashes here.

Provenance

The following attestation bundles were made for brahe-1.3.0-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.0-cp311-cp311-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for brahe-1.3.0-cp311-cp311-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 b85d64ebebbe9b8a41eb7bc2a431347fa8b9be5924aeec2adc6de7833a60217f
MD5 ebe53772ed4c9810914ade642c6ac57e
BLAKE2b-256 a71c161bae997de44cbe7e1e65fffdf21e82c06b079740cdaab6a05e0777c004

See more details on using hashes here.

Provenance

The following attestation bundles were made for brahe-1.3.0-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.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for brahe-1.3.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 35bd5b9f2ec640c68e72dca455c7db6d59493f695a16ece57347587746742891
MD5 a763ea6b3f5c94598d004d00c22d931b
BLAKE2b-256 28a4089e5e8aa21887b6be253aae53db815b0a6586d94b950e4e92e7e86acbb0

See more details on using hashes here.

Provenance

The following attestation bundles were made for brahe-1.3.0-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.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: brahe-1.3.0-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.7

File hashes

Hashes for brahe-1.3.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 f1e9bed21ef37d209a130fc1eed4b6d501c27bb3d84be6c77cbd436c861ae10e
MD5 1ee5a63c8278cd56dbfc59dd899a4118
BLAKE2b-256 82a91a554486bd5f032419af6a9de3456c122da28e252cc040bb79864d315386

See more details on using hashes here.

Provenance

The following attestation bundles were made for brahe-1.3.0-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.0-cp310-cp310-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for brahe-1.3.0-cp310-cp310-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 2ac6030f3aaf2d373c518e84edb6e8e4ee749b2cb4be20105a462724fa790284
MD5 2282c56084caf397c7dbcbbb149111fd
BLAKE2b-256 5fabd43ac62a0c47013718ad09cdd47b796a2e7a78b247e8d926daeb250d19df

See more details on using hashes here.

Provenance

The following attestation bundles were made for brahe-1.3.0-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.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for brahe-1.3.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1be9e67f00b96f041bc8be97b75677b3cd8c483a7e25b6b5f776a600fcf7b5d3
MD5 b1b2c6f9e2262db4a0c78478947bcfc9
BLAKE2b-256 0bed4ec025c92d2549e125d765131a7c652c1fd60ee9fcfc132c853f4a760179

See more details on using hashes here.

Provenance

The following attestation bundles were made for brahe-1.3.0-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