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

Uploaded CPython 3.14Windows x86-64

brahe-1.4.2-cp314-cp314-manylinux_2_34_x86_64.whl (20.4 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.34+ x86-64

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

Uploaded CPython 3.14macOS 11.0+ ARM64

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

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13manylinux: glibc 2.34+ x86-64

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

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

brahe-1.4.2-cp312-cp312-manylinux_2_34_x86_64.whl (20.4 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ x86-64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.11Windows x86-64

brahe-1.4.2-cp311-cp311-manylinux_2_34_x86_64.whl (20.4 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.34+ x86-64

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

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.10Windows x86-64

brahe-1.4.2-cp310-cp310-manylinux_2_34_x86_64.whl (20.4 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.34+ x86-64

brahe-1.4.2-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.4.2.tar.gz.

File metadata

  • Download URL: brahe-1.4.2.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.4.2.tar.gz
Algorithm Hash digest
SHA256 c21d44109c7bf044359755aa7843347d96c22eecd48bec6944877d9a06b8cb43
MD5 4b03a63f5b616137a62655e5bba799c5
BLAKE2b-256 818dde4a49317c97ec074e9828a502b4d27eb9a7cbfdb3705a340d37d2605d52

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: brahe-1.4.2-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.4.2-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 3e923d722b94d07fbd8984868f0abdd2bec2a5110e42d0ef6c3f90a1c37459f7
MD5 b99b4d8f0597f60913814156c25b0b60
BLAKE2b-256 ea0d383ee9bd16d2ffc5c20fac9325b9626b85c549b348ff11e45805109c7f33

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.4.2-cp314-cp314-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 bd22dcb9715c71b0ba54af956e99f59bef69f56caf43064c1c8710bbd5913e14
MD5 54fd25020fc2fac9b255d6749d78c872
BLAKE2b-256 41ef7bf842f14177c21e00a41ac18965fb08a38f08db1fd1585aab55d59fb143

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.4.2-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 af513c726f38547449490fa59791fe7d05e172512bd6868bf28c02973d75bd7c
MD5 d49e44736666854aedf3b3d8769e0895
BLAKE2b-256 c86caf757549be17c304957b42c22ed20abe0d1708a3f3daa61fdb6fab526bf3

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: brahe-1.4.2-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.4.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 a3056aef725ad550e91fbf58a583b3a1236674e05a002557c49d913d55d6bf6e
MD5 25e30f8cc0e8b0e8bda2fc1df3474634
BLAKE2b-256 5fc9a2c8ee564d6db91009d9c80fe12740e9b8af1266b0b2ba4518cd3bca3687

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.4.2-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 17ea7e74c42e4a4a4c1d3a8bf74242a0022f58443f288922882a854d0029638c
MD5 0ff9408da0a9c2fac1e59954248c2c44
BLAKE2b-256 1d102b87b9ea18c66380b51600577ec0bd17b860fe9d73eafd9b165e163b0053

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.4.2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c62ca727457db64a69f76d026e04a6eced4ec27b3b36dddb550d9311a43cd073
MD5 b378c84b23397b60700de8f40b9b751e
BLAKE2b-256 877d88c4b20f532c80ea99a06f00a55158a0e9ba0123448c69e8ebe8c2904e2f

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: brahe-1.4.2-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.4.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 c8eedbd6e02d6b7da196c5761f20a1ddfc1ec3a07bb4a61c6fb8824536c825d7
MD5 baa447d2280fdb6845def146b9522d5e
BLAKE2b-256 bb72b24916eef754604fdd3d8e3e6cb68978e6cead6c398c17a011c8af57320a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.4.2-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 d6d079d2e513d8a975c941172919326d160c571da5f9cd3e48890a8a2e5dd1e1
MD5 ec96060e4afee51426ecf609c5793703
BLAKE2b-256 27c276b7891b1c029751d038c793b00f61fb70f22f309f121b786f2e8561e7f9

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.4.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3a3782aedc0facc47a3961da8b0d746c64a44d6f1a7cd1ac71b3f33bee615052
MD5 cfae5b348ce3751730982e76f0e9aa75
BLAKE2b-256 53699885bbea27b8c9305433a03c3bb9fdc9a1b05644a604d222d6bb4a2719d0

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: brahe-1.4.2-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.4.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 6bcd06a49b2879469957906c378631d46d82547ac1a767c78a753f3b5dc8b51d
MD5 cb897dacd4b51a61ae17a621fd97296b
BLAKE2b-256 9d7d4fa2ceeeda34253a0138b9fe8476d757fca3b10b17e4db198872180165a6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.4.2-cp311-cp311-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 9f4ae1b4a01948e51c932262ddf0e774db0cc0ffefadb4605e206fcbd5d238df
MD5 c09c2c0cee2cd95c408d29fd65459bce
BLAKE2b-256 9ab8287fc17d4f5362e6961827761ec2b2766b4c998fa341d84c9f3d58b483dc

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.4.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3abe836705ab650a6ffdbffd545d543b2b4bf3fb5560a9b6d4e91c1114376a3f
MD5 fb5348650be950f3953ce8f802e49c13
BLAKE2b-256 07e72f36c393b15cb93f690f8dcef2bff6b0937489ad4e375847bcb6aa906f9f

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: brahe-1.4.2-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.4.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 bededdd8d55a808721cfa3a1adb2734d9edd946e04a983e5c0ce0b597120c51f
MD5 8c86863059d400c4a7bee69c908aabdf
BLAKE2b-256 1410dad878956083ba9581064f866633a06fc8ad287c56752703f5056edf2022

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.4.2-cp310-cp310-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 7192001705da3a71232af14f16f1a97f4c649c5b0a625113a371aeb5f4345851
MD5 62c33d0ac690c033c7a7724eb38a1c68
BLAKE2b-256 15e0cd65871e10ec4fa1d70d2253bc6a7f454969cb7e632e72d61c96c477b7e1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.4.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 50b925fda588ff23464931aefe2cdaba5b927cf30625b59030db26571b09b273
MD5 b6febbaf45479b7395a5409a4737e33a
BLAKE2b-256 cc0b81a7725bf60f2487e139141f4fd57d1776c63094e82582a4e1604573bc9a

See more details on using hashes here.

Provenance

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