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.4.tar.gz (17.5 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.4-cp314-cp314-win_amd64.whl (20.3 MB view details)

Uploaded CPython 3.14Windows x86-64

brahe-1.3.4-cp314-cp314-manylinux_2_34_x86_64.whl (20.3 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.34+ x86-64

brahe-1.3.4-cp314-cp314-macosx_11_0_arm64.whl (20.1 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

brahe-1.3.4-cp313-cp313-win_amd64.whl (20.3 MB view details)

Uploaded CPython 3.13Windows x86-64

brahe-1.3.4-cp313-cp313-manylinux_2_34_x86_64.whl (20.4 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ x86-64

brahe-1.3.4-cp313-cp313-macosx_11_0_arm64.whl (20.1 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

brahe-1.3.4-cp312-cp312-win_amd64.whl (20.3 MB view details)

Uploaded CPython 3.12Windows x86-64

brahe-1.3.4-cp312-cp312-manylinux_2_34_x86_64.whl (20.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ x86-64

brahe-1.3.4-cp312-cp312-macosx_11_0_arm64.whl (20.1 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

brahe-1.3.4-cp311-cp311-win_amd64.whl (20.3 MB view details)

Uploaded CPython 3.11Windows x86-64

brahe-1.3.4-cp311-cp311-manylinux_2_34_x86_64.whl (20.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.34+ x86-64

brahe-1.3.4-cp311-cp311-macosx_11_0_arm64.whl (20.1 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

brahe-1.3.4-cp310-cp310-win_amd64.whl (20.3 MB view details)

Uploaded CPython 3.10Windows x86-64

brahe-1.3.4-cp310-cp310-manylinux_2_34_x86_64.whl (20.3 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.34+ x86-64

brahe-1.3.4-cp310-cp310-macosx_11_0_arm64.whl (20.1 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: brahe-1.3.4.tar.gz
  • Upload date:
  • Size: 17.5 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.4.tar.gz
Algorithm Hash digest
SHA256 7a90168224e3736e13120ba06dc4e13dd3f84361f2e15e6000f375f3e9e85bf4
MD5 d3e50c6e312a1a33fcddd108897a911f
BLAKE2b-256 3825f8bacef1a3999ebd6614874e1006948f1f06b46cf2f6e2b80df139d68b59

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: brahe-1.3.4-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 20.3 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.4-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 ecbde7aca6a382dcb072cd722ff57395c3966fb1a92326d8ea4273169f1a166c
MD5 d36e5295b07864510aa83e2655f6e9e4
BLAKE2b-256 bd76d93ccf9659d7d481df2a4b4cea16e6dc9810ca07d05cca06b5a206dab102

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.3.4-cp314-cp314-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 7532b8e488c6f9f0ae3bb7e91ba12230d08ec15394937f2d93e545f794e77c49
MD5 5fcd014bfba82ef3af067d06b8843406
BLAKE2b-256 ad8de3522fe07e951a4f85e782b6b2da8c59ce0597aff36b77ffd2198c982117

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.3.4-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 044b67d3fcf1757eed0f4897a0d62e6766476e1886c9dada3babcdfc18cb0c2a
MD5 7e04cfbc3db8cf6c00ca826aaf1a7ed9
BLAKE2b-256 098cd31c0f5d3bb0112215e43eea0f468c7ccdb804c3ccb4ec8060867ddbe7bb

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: brahe-1.3.4-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 20.3 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.4-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 e85ca49befab4e303f8733f50022a6c33fa57eff6630ad9d0afe610ce2c9ce1f
MD5 3fa7af379bb73c8f27ceb92e082e7be5
BLAKE2b-256 b9355e8bb90d5021bf277d70d30a86fe49ac33608aa69bbc2e1101b5a1d2fe2d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.3.4-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 2d8a95e874b5506fb8b34b30de79ce3d8980c46bf9f297caaea6ea710803a838
MD5 25d2da1d01aa51ae833bce105d164d67
BLAKE2b-256 c0c1803681d82e2368dd96f14fd314af8f5ef03ae04f11305886b5d716afe99a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.3.4-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 85bc187a5fe171f39c1b48b15472cb1a11f0123fe13f48ea12e83921da1abcdc
MD5 67c2fd197cb8c93139bc9098f8705f83
BLAKE2b-256 11d6f73ed8b9dc2f77108a783b8b426947019760d396617d44ea94441e73c965

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: brahe-1.3.4-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 20.3 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.4-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 ed0fbbc3747076bc35032a95d4c765dfa6689f4056e52445343dd4e3efedfa0d
MD5 fcb650929be3f2da8551d3e0dbd3408c
BLAKE2b-256 d146b0089d60caf0a6ca60d15a6e0ee1b8f9efc4da9ce326762d2e0ab74bbd49

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.3.4-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 80b014dbf329c8af7edda3d495b514e6f69f68942ec16fa9d9c5db650f33e8ed
MD5 9d364e77728d934784fa50ebbd132c52
BLAKE2b-256 321deb6514a34ef5291c86aa52c67440691fb9576b3df150e9432312cabda834

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.3.4-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 afdfe29513e2dd626778145ea348b4d811af125de6af1dc261de99738bb60c52
MD5 7252ddc822cf7f88e7c791a622a62c9c
BLAKE2b-256 bf86d96219731081acf01f6bec07e160e5eb77593b6db5a5382f5744b638e3bc

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: brahe-1.3.4-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 20.3 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.4-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 87d1f5aa4ee66bfe5704bb1b7c39465a8932d1668fffc10019a644ee471bdfa8
MD5 7fc8bd306cd38a28d40c325ade069b21
BLAKE2b-256 86fa5e08b2c8b674d9cbaf2a3e77bda3ac9a8681c933537dae1bee20ab1d14a2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.3.4-cp311-cp311-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 9c5b97b13820499fc7c3f59fdb8d2c6b8cdb5ce73067ca13eca6b26812745f7e
MD5 7e04604bd7fefc447ec863a8c278ed0e
BLAKE2b-256 f6eeb2b23b7981e7c98c77ed2cc3ba6a634df15baf93717e2a2ec7322f98167f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.3.4-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d75c6dcbfe9fca2fa8eed18c2d49314d17dd5e10bab1ac0c70f4e506b685b5d5
MD5 1b6fdfa899df11a4c61915ac40ecb4a3
BLAKE2b-256 33c6b1aa53f4277a03f5cd723f3beaca870fb09ff45666414aa5ecdce9943d8c

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: brahe-1.3.4-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 20.3 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.4-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 04265026a0836b31ca6cdf2b5b3aef312ba230400c1d1df0b799791c1c5a08ac
MD5 3781317caf2f32534c0a376e49ba51ce
BLAKE2b-256 7e9aadf3b50e65090a0c728b922e55b20310e1bc9d2c77f36cd2f8eed993b8da

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.3.4-cp310-cp310-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 1574652e9d5947e2650dfbe453ad01618e4c962e6c1f7ed67616a3167571291f
MD5 db512272358bb371d37fa875b7dedf8f
BLAKE2b-256 1af1a89a9c1c59a477c50b0c6dffbba531e81069075d33338754bc8c6907b294

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.3.4-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f0736b95720691fca9f8bc6bd75f493bd2696093e85293e712544ab36cf8a836
MD5 0514f95ee7be46ad9258505b1ef9a961
BLAKE2b-256 30ff60b02dab0bc6049f3e508c3e31c7a4e4cdfd8413e549f3f0014f3253475f

See more details on using hashes here.

Provenance

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