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

Uploaded CPython 3.14Windows x86-64

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

Uploaded CPython 3.14manylinux: glibc 2.34+ x86-64

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

Uploaded CPython 3.14macOS 11.0+ ARM64

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

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13manylinux: glibc 2.34+ x86-64

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

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12manylinux: glibc 2.34+ x86-64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.11manylinux: glibc 2.34+ x86-64

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

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.10Windows x86-64

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

Uploaded CPython 3.10manylinux: glibc 2.34+ x86-64

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

File metadata

  • Download URL: brahe-1.5.0.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.0.tar.gz
Algorithm Hash digest
SHA256 45175aa100e4895232391c60b3c5fa0c96ac0ec93e1a89623b3c75dc22a4d7f9
MD5 2ec8832e0da59f773f4a08d86499e638
BLAKE2b-256 3f3368083cfa232de9e034434e4ec4f9a88ed6c92514aee36b56f2c3084b18dc

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: brahe-1.5.0-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.5.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 f6845a5e188d4df84fa4bbdf9b0bea439786fdcd5cc81f98161b93ba34bf0804
MD5 6c4ab8b2ea90436d5b942671b10cf1fa
BLAKE2b-256 e4086e11d24c844a97232733f8c0c2a8fa06ffa01b8574204b0e09db897b5583

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.5.0-cp314-cp314-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 9f8d66632d412d8ad7054f2c82affa6763112534d112a39094f14e9bd84df2ef
MD5 e75b0c4d6b33eff196bdbd13163bbf0f
BLAKE2b-256 c90289c52669deee2cd0ba50d7c4295dcf613faad0c6bfb38c449206029c9942

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.5.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d883f0d21c00e8d5b76f0ad9f4e607ca9061497810939eb3ac19607c8544a784
MD5 b1467011b8155b316719fe547deadda8
BLAKE2b-256 4348912e7592c0cc567ff906906d5494de0ee2d247a4a7901846d2e8229558a9

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: brahe-1.5.0-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.5.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 dcd8518ee5cdad82a36f505aaff803957fce12a878b72c1702c599d2369b0bad
MD5 0659abd2d8ce8bcf5d080db848a5f503
BLAKE2b-256 6cf12cafba41cbf2928c23dc122cd04db4412c89da844292d21b46e954799112

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.5.0-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 4974745cf2b088ca7486cdff607235202042a5d7ea58c217586ac962d3de9994
MD5 e78edc6f1fc7408ff841c5727d6487e7
BLAKE2b-256 78d712cfa3c0fa46750fc957dadd3e3173deaf5b1787dfb803d94d6561e948d7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.5.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 df650ead65273d3d6be0c83ccdba7c0208f25bb94ef315bae20d199f1c9920af
MD5 fc4c205ef5ab72cf17e85ce2fc109c63
BLAKE2b-256 5916098465912684c22da67311d036d3c8b61ad4801b81152487be2feb22148e

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: brahe-1.5.0-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.5.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 c1e9a72626396e1c67be423ee1bb8a4fd2569ae6c14bccd7164c9dd94f249133
MD5 ea06c76241d592edefcc4e4e10ea2922
BLAKE2b-256 1cd7677ad3b3a176262a75003eea093afb6c1a5d9afcf98f7657bc34b18e031b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.5.0-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 7ecd419a542a8577d166f01fe7de8355fcf7992593d00eb92eca12832111415a
MD5 8891be7f8722e6e7b638f7af2b1b35e8
BLAKE2b-256 1716d174af31557bdc59853206589df7e5e48782d51a84173a8bbb6105b9d42b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.5.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3fe5c195c61f067f6ab7a215a2c78fd6b22903f3a0b3bccc0a98bacd8ab5f910
MD5 c9d0b65c10998a47fe54f4c2f87e2183
BLAKE2b-256 8f43fa9c11db5a0ccfde64e1ef78d0207a4407cf0fa8c9a3247cdfe0287e7e00

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: brahe-1.5.0-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.5.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 b0cd6b1804d1d084840a14ce59b847c1a3268d04158334b9683f5eb6a3221ff7
MD5 c1927cb3c2755c75eaf6cb919c9d88d1
BLAKE2b-256 805d90a7fe42e75a73807f6383c3fbe8528900acb02628e6d52c916d7ec337d5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.5.0-cp311-cp311-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 0a44d56e5f374e6a68357083abd4ed31873ff8f950d51c663d6988535612a25c
MD5 ac42593ce030c595acf642b1a2110308
BLAKE2b-256 bcac770a7dc9750c6ca66574e0c699b2bc0d7513a3e85abfb75b61e281987e62

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.5.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1635f390f899205bd4264680344bf3a32a8d903fdd48d984c8247056c99c261d
MD5 861cf73ffd438334ab28fda484612326
BLAKE2b-256 e8158439a3488963fb8437c31d387a14b9548f4e23d1d3cce36653e6631c2ed6

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: brahe-1.5.0-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.5.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 c6c9ca2104ae871dd2543995e379fc35d60e27060892d0f444d0612a9bf501c5
MD5 e6e57995d7ce6b6f8bd4c447997c7bf2
BLAKE2b-256 e22a199a84a08e74aeb3312fd4fa9e1ab0d5806f42e111a00cbaf2020d7eaf60

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.5.0-cp310-cp310-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 06082300bd2d6df27e0345bd9ec5488249f83a7e6a979da98f5676f2ce023181
MD5 d76f263122de9ecfaf181c3c2b906ffa
BLAKE2b-256 6e150a7ef0cf783d5aef1c1cb60fcf064f49c49fa4c45840499e1f1c5ea931ad

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.5.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d5be97cd12d3fda50665142f6a20461d2cbc558cdba601f6ad813f96218cfc23
MD5 fc368601df33f41f8270bb4c1075c877
BLAKE2b-256 3895a46f52eceaa4729a8a7809357067cb0e28e9723a56afc20215477820bc9d

See more details on using hashes here.

Provenance

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