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

Uploaded CPython 3.14Windows x86-64

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

Uploaded CPython 3.14macOS 11.0+ ARM64

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

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.10Windows x86-64

brahe-1.3.2-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.2-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.2.tar.gz.

File metadata

  • Download URL: brahe-1.3.2.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.2.tar.gz
Algorithm Hash digest
SHA256 9960e3a0ba04bc4f15384ef9b4610c2e70bcb89b1928861580a813e64c8e82d4
MD5 2e554a3e0645db4105b1b355080a6e09
BLAKE2b-256 37bb798f7cd63840e37d88a504dc6c5409602d55c39a99a71e76d6d778d74e21

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: brahe-1.3.2-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.2-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 dd6db0798fad207a227580d37d1020f3f77d0fc6022e1f3eb9339021aba46e1c
MD5 f597e7d74952d4dcb6fb3cec46aa70dd
BLAKE2b-256 1825e8925595b4cfe82b8a3ee3734aae173abed678f125b885c049cd72308af0

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.3.2-cp314-cp314-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 e7edb5d59c984a18b22f5dd3aad57b14a8b5175265f6860d8b91248f4695fbbd
MD5 c2e04e12c2e3e18e87a45f5437789af5
BLAKE2b-256 cef85d45e841725a541d609ec095ab8ec6573850c2e5c2e3a9221ba352af182b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.3.2-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9ad2630d0da5595efb7ce86a6d6d9b6890c6d367f793ed334bbc8f865e6462a4
MD5 d64e782369b80fef1e57565a0e6080a8
BLAKE2b-256 9a27078183b1995c6a14bd124439d34e1ed48665330d5a4feee9e8ab9bf60f82

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: brahe-1.3.2-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.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 455ccffc23fd1dd9cc525cc685ba1f2f8ad0a7bee9459fdc0be004ba788a41ae
MD5 6051ca228c21273711a925558b5fdeaa
BLAKE2b-256 9039cfeb06b110b69c2c7efb4657f8d8493e801b29afad4dc0af3a40eb70bc7c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.3.2-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 13593cef0541c99963d2efd74c32b420e758519a65c2b9b8968ef2e95de6c298
MD5 b413625c8a0876a3b5ee52e0d4790bff
BLAKE2b-256 7e0a3198e1227b549500705101ba3a69032964c208c365af8fa47886ce867117

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.3.2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6d07ba6c91fdf203e24a7a2334ee4e72f02d96b1770a7a974100d1a40c6511ce
MD5 3e1d2a52eb20b5584dc3b8666c413e5b
BLAKE2b-256 890fcf75ff89afea7bdbf132c93c93cbcd84615e8ef155e71e66c031c95710d7

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: brahe-1.3.2-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.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 66881fff50e6e9cbb7d9c220753fd3f86705a1191554c0e17e6898f44f07e8c1
MD5 3992d66c32eef3534e73e7761d6f9c82
BLAKE2b-256 76ade06778167b829a55f21962f2a0302232aa8f40974fcc6a35bbb14d7f328a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.3.2-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 ace1d8fda4c36c47dc0f684547c2a6b7cc2f24472eb0c1eb6155c83a6d1ecabf
MD5 2db50b2589f335c2f9bad3db04cbac7e
BLAKE2b-256 7920561db163a1ab7240c130b4e200bc6846789f65ce5d1362896047df557438

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.3.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a456fa360b48490cc2fc0a37e7aef5d46aef15cace4aa29c522bb3ea9cd8f64b
MD5 2cebea9c6e42b35fe5c2db53f56c357d
BLAKE2b-256 0a3032c51f1590534b5d6b31d24d437002aabaf5c3553b9e5d56b5f90d491790

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: brahe-1.3.2-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.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 7a2476a81d8e70c3eb5526094d81b1b7a3937966067df54a4ca50d475b9fa7a7
MD5 fef677aef3ef4ea5a3482008262589c4
BLAKE2b-256 3bf33cded8182af3c428c933d88eb41d422552292da18f176a6f99807c73da44

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.3.2-cp311-cp311-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 d33fbfa46eae96b7455e589d0b8f89897d3827238aa72181ce4b7dd36b7a5544
MD5 f78fe9b05139caad0c6f803f23dc6465
BLAKE2b-256 5ab5849f7290e5fcded12d937cffc043a96be9557798629df091077a195cd788

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.3.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8823191ec69f7807e99d4bc81595c450d5e8fc9ea9c7456c1ba291007ece6206
MD5 f1035e4badf9f20c938ef5548e23b439
BLAKE2b-256 71a2c928b0faccf7182d3efadb2f9cbdd7f7ce8d780b2d9c090f264a52ca9dfb

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: brahe-1.3.2-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.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 6af0046997d3d530a44521633ed7095c53df4ff81b88f40c075ae759926276fa
MD5 9cf927e8341990dbdadf13d1583b25e6
BLAKE2b-256 a66690eb1ff19c8eb21f4d556aad8f98d82f8a5bb839b7003bed7a58b3118a1b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.3.2-cp310-cp310-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 a01e8c4b903494f74a5bdd6cde6ba1b6bab91dd31c9505ff978cb54e76debe1c
MD5 6cfbf3bf4c9aba1d9201a73f9ec515cf
BLAKE2b-256 fe6d6c83a3ffb722569de43736f2db8a6b0fd4cdd67af037f83af1572847c7b9

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.3.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 21534b8e8074ae61e2aeba74ee2839e8ad4d85c70a3dddc2e60f9468e15d430a
MD5 dcb775fb654c5b6252f359e5849f6cd1
BLAKE2b-256 0d156eb43aec0fbb6f0296f4c3a4a536f25fc36b421b897e41473dac8115c361

See more details on using hashes here.

Provenance

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