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

Uploaded CPython 3.14Windows x86-64

brahe-1.4.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.4.0-cp314-cp314-macosx_11_0_arm64.whl (20.1 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

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

Uploaded CPython 3.13Windows x86-64

brahe-1.4.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.4.0-cp313-cp313-macosx_11_0_arm64.whl (20.1 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

brahe-1.4.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.4.0-cp312-cp312-macosx_11_0_arm64.whl (20.1 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.11Windows x86-64

brahe-1.4.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.4.0-cp311-cp311-macosx_11_0_arm64.whl (20.1 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.10Windows x86-64

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

File metadata

  • Download URL: brahe-1.4.0.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.4.0.tar.gz
Algorithm Hash digest
SHA256 acf769e35e93f0eb420c343e330df14d0f70a6b3d15f570cec32f76c68e4c019
MD5 ef8db347a6401a89f6bd522a9267ba9e
BLAKE2b-256 5e1eb659d7659d4ab32e2dcda274ef5bdd0de8808f804d06e5b9f2b71a3a7859

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: brahe-1.4.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.4.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 db170297606e1f8b9be15cdd5246574e7cabc27a68ec91bd85cb5e89201fe1d2
MD5 d75eb93c49f42a7aea47da7bf9fb67b5
BLAKE2b-256 9e6ad31c0b3dc6f62d728d2b90f735c3ea18bb927cfa487a7e7a5d6448ba4abb

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.4.0-cp314-cp314-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 c958af717045d212b4d3f0d23853ed35101fd8bf62124598a4052d61e290ddf3
MD5 fdba3a3d8afc95f7fb12c45459184b0b
BLAKE2b-256 916b1679f13c52248e14ca3959d44fdfcf78a75e4c0859b212dae56229227a01

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.4.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 77adc31027d81e9ba52a9950c705ec190f35838846e3bf44d7a08a9e8ad7b460
MD5 03f65722e9670f7b0896bde5367e5550
BLAKE2b-256 d327d31495ce3910edb549400a6ed126f9071b381c14db7610257cd7b36f93ef

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: brahe-1.4.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.4.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 453bb45947bb0c23f1ac6a9e650333c527dbfb295927d478eadd55d5169fb51c
MD5 7471626a81c7ceb34661b4fb46ba11be
BLAKE2b-256 e53ae9f906f527ed22a609c892a96d6a97b1e718bc828aed1d3bd110101e72bf

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.4.0-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 645f34135e0153ae6d1c7c3245720dca897be4ccbb28d9f8abab2e9df0b99df4
MD5 f3f3e54cb8a7707926c76b0c73961b1b
BLAKE2b-256 b138e559bd93b24349140ca13673155f0e4f05c9c554cfc191d965cef46fb259

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.4.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8bb1f966ef3b4b9c3d38ab060f58dbee10cdbff0143e567c1d5776eb45592216
MD5 45f326ec9cd183fc5331d20bcc7a507d
BLAKE2b-256 4860df2cdb26a3291a9041cc6916de04a6e6ccf1d41f81697d3bd2fd619f584e

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: brahe-1.4.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.4.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 ea2793056e2df787750aecaa50560535e3e308a45075aeb3d8a0ad4a847b69e9
MD5 9b78d8e37daaac4e82f012d29aa9e2be
BLAKE2b-256 6a2f4993d2ad74fd6fbd466ec12f48c0e57c61d42dfffa99da2ba013992e085f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.4.0-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 bf3d7798dee0f00245bd99e82cebeff920fc15697bc6d52d5eba644fa7f42fc0
MD5 e054a5acddea37a2b944624061764ded
BLAKE2b-256 ed815e207490eaeae8afea1ef801e73ad61b245cf28336f3fdc0413a0c5c5bbb

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.4.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6054e5490249107ff0f3892b3793cdcde18e333118de53ff03d778444ff9c849
MD5 933a8d443da4674ffd024e3cbe3ec973
BLAKE2b-256 4e46a94137a4078e90be6a5936e82784bd106db61785910381ac57c62e537b10

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: brahe-1.4.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.4.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 f0f265a88ce666785f5abbae0ceab35dbf6c68307d2f8ad095b53606665c2607
MD5 c20f6f0d1aa10d52533377fa04a3888d
BLAKE2b-256 0617cb658b5f0a462796697bfa482d95a933d670282fdd9e0f0dfa463649abde

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.4.0-cp311-cp311-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 cceb41d6b43176db3b0d709ade3513da0a5ae7f2ffc111a4a8d40cac0e3bba83
MD5 8bd8f66cefbb2e46c5e94b2803e83f5e
BLAKE2b-256 55603e4be45dc717255a288e273a7a1cb29faf24e25a3608713daefaabc88f36

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.4.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ad7686eab14cbe36fd653c0570e393cc7ef4b676febb52ff14a28609efa1348b
MD5 3675a49ff1a080f4e577253fdef1feb1
BLAKE2b-256 c07adf3b951822c88bac096f74801a02f817003e8dc2d4f7be742453b8ec32d6

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: brahe-1.4.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.4.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 7a828907d5e31d1a16c18f5ba88d0a2205a08c2aa8046d460b80b20a8695f90b
MD5 e448886f1d05686b55ea8006c92bf696
BLAKE2b-256 f36b0e26c85566c1677b419684647630dac5b65282945b3931b298429e8a57a3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.4.0-cp310-cp310-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 d34d52a854ec493bb2abff1867def27f30e7f5315f5969120e71a5ef4298d6b7
MD5 239036987c621a3c55c4be368e39aa93
BLAKE2b-256 2d33f939d8d5a34ab8e9ae35af816d9bd29958e24941ac3f26ea22b8b5da8b33

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.4.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 976446a03c7fe7a5700ea98f20e7e99ed929c80fc1a2e578d6d7026e9a3bbdd9
MD5 4c0dce3701677bf3675d3f9bb1f9d9c6
BLAKE2b-256 c47eeeb37fa29c6f4563b2bb32298a8ec65e539aab7a712e79bee737e417181b

See more details on using hashes here.

Provenance

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