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 follows a versioning scheme modeled on NumPy's policy rather than strict SemVer. Versions are PEP 440 compliant and take the form major.minor.bugfix:

  • Major releases (X.0.0) are rare and signal significant API or ABI breaks.
  • Minor releases (1.Y.0) contain new features, deprecations, and removals of previously deprecated code.
  • Bugfix releases (1.2.Z) contain only fixes — no new features, deprecations, or removals.

Deprecation policy (transitional): The long-term target — matching NumPy — is that backwards-incompatible API changes emit a DeprecationWarning for at least two minor releases before removal. While Brahe is in its early adoption phase, a deprecation may occur and be removed within a single minor release. This window will expand to multiple minor releases with deprecation warnings as adoption grows.

Pinning: For most projects brahe>=1.2 is sufficient. If you need guaranteed stability during the transitional deprecation period, pin to a specific major.minor.patch version (e.g., 1.2.3) rather than using a floating specifier (e.g., ^1.2.0 or >=1.2.0). See the versioning docs for details, including guidance on treating DeprecationWarning as an error in CI.

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!

Additionally, brahe uses cargo-deny to confirm that all dependencies are permissively licensed and compatible with commercial use. The permitted licenses can be found in the cargo-deny configuration file.

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.5.1.tar.gz (17.6 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.5.1-cp314-cp314-win_amd64.whl (20.4 MB view details)

Uploaded CPython 3.14Windows x86-64

brahe-1.5.1-cp314-cp314-manylinux_2_34_x86_64.whl (20.5 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.34+ x86-64

brahe-1.5.1-cp314-cp314-macosx_11_0_arm64.whl (20.2 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

brahe-1.5.1-cp313-cp313-win_amd64.whl (20.4 MB view details)

Uploaded CPython 3.13Windows x86-64

brahe-1.5.1-cp313-cp313-manylinux_2_34_x86_64.whl (20.5 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ x86-64

brahe-1.5.1-cp313-cp313-macosx_11_0_arm64.whl (20.2 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

brahe-1.5.1-cp312-cp312-win_amd64.whl (20.4 MB view details)

Uploaded CPython 3.12Windows x86-64

brahe-1.5.1-cp312-cp312-manylinux_2_34_x86_64.whl (20.5 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ x86-64

brahe-1.5.1-cp312-cp312-macosx_11_0_arm64.whl (20.2 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

brahe-1.5.1-cp311-cp311-win_amd64.whl (20.4 MB view details)

Uploaded CPython 3.11Windows x86-64

brahe-1.5.1-cp311-cp311-manylinux_2_34_x86_64.whl (20.5 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.34+ x86-64

brahe-1.5.1-cp311-cp311-macosx_11_0_arm64.whl (20.2 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

brahe-1.5.1-cp310-cp310-win_amd64.whl (20.4 MB view details)

Uploaded CPython 3.10Windows x86-64

brahe-1.5.1-cp310-cp310-manylinux_2_34_x86_64.whl (20.5 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.34+ x86-64

brahe-1.5.1-cp310-cp310-macosx_11_0_arm64.whl (20.2 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

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

File metadata

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

File hashes

Hashes for brahe-1.5.1.tar.gz
Algorithm Hash digest
SHA256 d6b43e1a73a108f0984b0ae0f3be24d932035d0b5c2a66865b3ad2c9f56b9b59
MD5 66ee7231cc78344d42f0acb3e662119d
BLAKE2b-256 620fa3c9ec54b76f7ad30285333bfd681cd21a8f7325c73ccacf1b041ef5d96d

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: brahe-1.5.1-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 20.4 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.5.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 39f43ffe7a1a2f2157cf20217b5b8be887e75c85553f4dbcbfb26be5c6332f78
MD5 426eef5f8989bc1408ecb133177f007d
BLAKE2b-256 b41de17306439e74ee1a0ee98c4c3d8bffd54e0056877238669e62f9debd5a92

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.5.1-cp314-cp314-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 b9649ffb4c56a03e22254d69252bbec32ea319dc3d42cd01af0aa577d5bec75f
MD5 01f6c2640142f115b78f98bea1ef81ae
BLAKE2b-256 51065fa65c2bc6981132c3d4e0c74aa16b31f356aed3363bcdfdf63fcb06f308

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.5.1-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d229d8db6770cdc77254f8510b3f62c837df5fb93587781b80841810e8fc696b
MD5 a18ae962efdbaf894fde09cd1491a716
BLAKE2b-256 758300489ceeaa82ef4a28b5e247c8fb26dd22c6478c659d68fd461f97926b57

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: brahe-1.5.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 20.4 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.5.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 82c692ee934577c43279a8103dac9a82946e997adb88af4409e535306c874901
MD5 e95d8c043b22c2df81495eff642f799a
BLAKE2b-256 d440dc35f069f00c1f236c1262b72fa430b17b664d90003a2bd179036a20b112

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.5.1-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 c23f6c2c066e4cd7886a96f084114ebbdc8d79df44b5e1ed2e3e9f2bd67c27ca
MD5 fc0e1a3b19663bc825b4cdb4d420ab36
BLAKE2b-256 2fa2138506d34268887c81ae116a59ad79b23e5305c4d828886b005832a7c131

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.5.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5dc718e07dca65d4af5d4d2ffd0477fee03be8607aaeb780263f3fe8a0485924
MD5 3292c2c519952e085971e8f62d509080
BLAKE2b-256 f925a422532eae1f751d00c3630b5c5861b450646ad629f6dcf6f552edc979e4

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: brahe-1.5.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 20.4 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.5.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 bc4ba4dddad08c7eabf68e51d2cb7a07938e9cdab1488e13daa995c8e63bd6a4
MD5 66aa00567e4708805e5ea43580237bed
BLAKE2b-256 d55ff09353f39677a3f5b123695866732f8f38534579e6fe37ccd2497b1ce864

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.5.1-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 f0da691e3c57fd13a0b4789d594221053eeecd396c50ec803224f17ee960e73a
MD5 1fb9dc5df198f788385df5bc9dce7d8c
BLAKE2b-256 b41300b8d396f88e8291ca4d49147722c099740ce851783dcd79e542b753ef1d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.5.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 681e9a29e0a04c856947da1075445547bf91debfe67309810820596ff2add17b
MD5 380532600ee0e351f7b2fbe1766781ea
BLAKE2b-256 ccbd36c0453ef30ccec3ccee7df319071ad64d3b5157971e1b3e53c171135c77

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: brahe-1.5.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 20.4 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.5.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 e9a205cd38d83458c70f195e28ef6f41fb896ac5982773036742ae8261c6621b
MD5 62676dab9743d0296f7272d0665e2912
BLAKE2b-256 b389fa9da373faedcf70cc0111a74d3f6568270cc61e72d55aad444d9d2b99bf

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.5.1-cp311-cp311-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 8a9c80bacb509ce6ea7172c2a3bb0c799bd9b7981f779c27ab8d97ede8605715
MD5 36bd27be4bec0fdca21d1c2135247dff
BLAKE2b-256 276b3ae0b842b70ac237b1034adc367e74b80e6998e952080eebb8e396f22c40

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.5.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8570657d801cf64b2a9b1d7ea8d576602572639b5778ad23a635fe3dc0f9eec8
MD5 ba8678132545e0fef938e94752ca8385
BLAKE2b-256 b5b2c5f3c2fa1fca85b0054e68470a2d0dda8a947b937ef806fb6791dfc6d43b

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: brahe-1.5.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 20.4 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.5.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 7eca83e7082a366ec6dfd110dd62eece1e1e0853a092f9b2b7866a9c7ded6d2f
MD5 afc2789df3111043644cf8e364748640
BLAKE2b-256 5eb036a9bf286124ced45b8bc19bff53a9095938e3419dea7de6a9e20d95cea7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.5.1-cp310-cp310-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 aaef396987ab7fcd70b612b8ae7f831c7dc5dbc0e97ab945cbf2cef652968355
MD5 0402c71d01af1203f95f0d089a0370e9
BLAKE2b-256 b4f72db85dcb2ffcebd7c5d0fe63692082dad63aa3c93eadd20bc47285b4b620

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.5.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0a4506cba85dea224d0ce42d16f1506a6506ad89d12f8384bbd1a727f1d90488
MD5 5e95eb911c9821f21e6b4f36a79ceb7a
BLAKE2b-256 1f6f6e87a0a246abb68b811bcfae7ca4aa095e55ece51cd06917958e84990772

See more details on using hashes here.

Provenance

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