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

Uploaded CPython 3.14Windows x86-64

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

Uploaded CPython 3.14macOS 11.0+ ARM64

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

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.10Windows x86-64

brahe-1.3.1-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.1-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.1.tar.gz.

File metadata

  • Download URL: brahe-1.3.1.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.1.tar.gz
Algorithm Hash digest
SHA256 37bca95ac8dce136226afbd1a282ec8c00bba9ec9723914f9346396eb519e679
MD5 f86c47acf3b69aeaf18f581acc37436b
BLAKE2b-256 132b5f292fe0d4869bd6dde516bae3bc9107d52d08cb67c21fb784d4cc939d15

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: brahe-1.3.1-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.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 f8702882a200534a0cea57a5293da12ed7b87d5003f42ed16b9a75dc44afd552
MD5 6c1045816041c7581ab25dc2b9c6f86e
BLAKE2b-256 409e635bc455090ad06683095dcefd75a6c4ec90cd342f9e84f978068cc23fc7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.3.1-cp314-cp314-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 296f30b3f859eea5d9477ded76e80a43be2fedaa0b758d87f951041796da856b
MD5 82b713dbd1cbde44a605e9d71d312441
BLAKE2b-256 dba73b4655808ae8fcb2aed7a7ec45902eb1ebc399990528d936d79cc2b428e0

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.3.1-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9f215c1f60c3f6907134bb97d0526f207c3538fb6e055b3bf7a4599c5ac5f3d6
MD5 a5bbfb3600b11da5785c8ecbfdf3c336
BLAKE2b-256 35eb17c3871a1575ffa052acd702c708adddc8eed133fc42a88fc30ac6a858f5

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: brahe-1.3.1-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.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 c960a3564b07ed2d51bf9008d7ece797984f09bbd4a859be4eee305b2c2103fc
MD5 f816f39333dbdf3d3fa7b24d309a7472
BLAKE2b-256 dc1a2dda442161925710270bc79916a0dedd6c1a08c97280b7563b22760488a8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.3.1-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 743aa2063ae6d84aa721bfe8f8f97cb62d082b00522241293b33a062d64af4c2
MD5 ce16cb037639d41dcc28599a60a18d97
BLAKE2b-256 49b3e76b08829cfe9e2050662e2cceae4748aed5278352c2ee606c28b67ba14f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.3.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 57411c846d8e72b733fa6c5e8cc25a51ccf83ddbf827bc1fc7e122ee08378a28
MD5 d8bc8b06a615e33683ffe8a8028d02ef
BLAKE2b-256 648bfc02bd419a3f3c63a0ae4399d498883e99a110053a8e994c16ee8cbeef3c

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: brahe-1.3.1-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.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 10b9a859aecc2e7ccc12bd7f918aae010b88ece6b77eac3a3166564c34a5f0d6
MD5 9d4698916549f3638d72a4c565ba1838
BLAKE2b-256 9ec72de490f68027461650c1dd2c60ee607a334af7745e911da7630caaa9b95d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.3.1-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 8d677cd07ca4ed0698fb974dd8d9254b62bbb9832848f70783548640f18fdb00
MD5 3ec773e5fd04e85d6f17df5b56b082b1
BLAKE2b-256 1da09a0f7bd3a6c9077df36dd5934c7bf8eb17bd2e408595a37998c63e8d984b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.3.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3c38e2b891ada706986596cf9538d3ecbe4924697338d560eb5d3629b1164df1
MD5 ca1d5b2751403f6d2b917783a7b8d03a
BLAKE2b-256 6116f90a3d0856b5355a7a9cd52112a4b49d33384e6b06df7a61e00dfd078d45

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: brahe-1.3.1-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.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 a4fb8729719e2da378e67eab84a551397b7f25870811edbb6569a7ff329452ef
MD5 568037abc6731675a6f09cd64a958eaa
BLAKE2b-256 099c00aa289732a82cc17b345604d6d2b28d8fe32c6ec4e002fafb92c4005b61

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.3.1-cp311-cp311-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 ebdc4927a0294c77c6b4c4f86d2a23569890486e95a0ddbdcda613a968fa3368
MD5 6e242e896e9186c0c82055702e31c3d2
BLAKE2b-256 456dd44a51873a22824e27c0d211efb05b6eb14b597294bc0d8bb4c11919ab79

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.3.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 529eba8a4fd1f3b43e6f54079542b2ed50ba20a793c449e108edebeb59d04fea
MD5 8eb321df349925892f61b6d6ed752eba
BLAKE2b-256 afe90fcc7d40ea95dbac167b68d10b4e55b964842aa084fa9a0d2cb634bd39fa

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: brahe-1.3.1-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.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 281b2ff4ea0998cfab7e38accb3a441cef1415f7b4234510fa25f16e60a78f1e
MD5 7e05ec1e180f48b9d7e713f8e6c6182b
BLAKE2b-256 e7b7a50574600561c01432819e5cd2132bd9a23ee5760af2f0bc7ddcc411ec33

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.3.1-cp310-cp310-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 07a43f62d82906a25589e547c9598ca93447d2a7365724b9e795c2ad3ecc60d6
MD5 00b4f67485a70555c06a5be78f6db593
BLAKE2b-256 ba0f2a4063b3fe768f4c2219eaf154a4b603d5494a26d2ea3a76afc640f73038

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.3.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 47fbb6a06d0e58628e6c91412c8933147b395bd5459cd90d80586b99144b2c94
MD5 3f3eed93ab75542565f8ee5b71af5c4e
BLAKE2b-256 a0400a7f7877e11374699aa3c96887a8d78cd452945e09771f8e034ff2f2a05c

See more details on using hashes here.

Provenance

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