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

Uploaded CPython 3.14Windows x86-64

brahe-1.5.2-cp314-cp314-manylinux_2_34_x86_64.whl (20.5 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.34+ x86-64

brahe-1.5.2-cp314-cp314-macosx_11_0_arm64.whl (20.2 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

brahe-1.5.2-cp313-cp313-win_amd64.whl (20.4 MB view details)

Uploaded CPython 3.13Windows x86-64

brahe-1.5.2-cp313-cp313-manylinux_2_34_x86_64.whl (20.5 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ x86-64

brahe-1.5.2-cp313-cp313-macosx_11_0_arm64.whl (20.2 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

brahe-1.5.2-cp312-cp312-win_amd64.whl (20.4 MB view details)

Uploaded CPython 3.12Windows x86-64

brahe-1.5.2-cp312-cp312-manylinux_2_34_x86_64.whl (20.5 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ x86-64

brahe-1.5.2-cp312-cp312-macosx_11_0_arm64.whl (20.2 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

brahe-1.5.2-cp311-cp311-win_amd64.whl (20.4 MB view details)

Uploaded CPython 3.11Windows x86-64

brahe-1.5.2-cp311-cp311-manylinux_2_34_x86_64.whl (20.5 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.34+ x86-64

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

Uploaded CPython 3.11macOS 11.0+ ARM64

brahe-1.5.2-cp310-cp310-win_amd64.whl (20.4 MB view details)

Uploaded CPython 3.10Windows x86-64

brahe-1.5.2-cp310-cp310-manylinux_2_34_x86_64.whl (20.5 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.34+ x86-64

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

File metadata

  • Download URL: brahe-1.5.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.5.2.tar.gz
Algorithm Hash digest
SHA256 62e937c2063d9f2828dae4e2a1defcc398626e9d3f4c77fc3dc2a82f7ff18968
MD5 b710d545a3cfc589104ce4ff52d6ca05
BLAKE2b-256 52fb3df105a675d0e12c7779ae8578749129b2f887cb305c1703cb91264f43fe

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: brahe-1.5.2-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 20.4 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.2-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 d8ad7eec75e093104381498f4eef82be050b8f2c524c6532e43f86ba00dcb848
MD5 7f4311e100c1ee6e40145e4514d89df2
BLAKE2b-256 4f2c44d3756686e6533c32a5702dd980394d9dd470d9746028e25c39f191f0b3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.5.2-cp314-cp314-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 8e60258533f69d124358f7a29166cb84516014a97e922c1901335fd372e3241b
MD5 66bccff81d4e34be5c32a265e436dfb6
BLAKE2b-256 edd165620ea3771b04d248c3c9aa14a54c26149d1c6cde1fb6990a6931bca1c6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.5.2-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d2e5c95d88389245fdf09572c16178006e3914c92b1bcdee47261ad975aa4ace
MD5 8a3face4dc01c318d15ca026bfffabb4
BLAKE2b-256 1a486c5f8c18c7cff4afdde1a69de0419d09c5284a506d52e2e69affe966f6c3

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: brahe-1.5.2-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 20.4 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.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 5a52c59b0f5b4c7b035d3b9ec4bbdcd85f8b153fb3a311e63322b156205a3575
MD5 efc7d56d5b705fbeedd5821240c259ae
BLAKE2b-256 aa90d33100da50b1a27ae87e3950c8f172e3fe6881dc4a1e6cd4a6e1e7c036f4

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.5.2-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 41d533a73e5ec804f7e4180b3bc50c8c09879cbd89011bf0f902f1474a86022b
MD5 3715680977307f019446c3c19b406650
BLAKE2b-256 63fdc063de3669118e1891a788c8c38f37a3adb88c37c676a4b4d37c45043c07

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.5.2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4679aa57126e2dd0c893317552b95b4d9167d67ebfc4cbd92c39c47cee4e7d56
MD5 782d1436452deb9c79b9b1d8e527e6f9
BLAKE2b-256 ddebc16496d382b2d26b24aae33b9d43a42f4aa11b1ff5b2aa0c46891f468dc9

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: brahe-1.5.2-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 20.4 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.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 c39842e601b3d6754c64e4dd44c75bc4b19d8a21252f9e3679647cb1c67f7dfc
MD5 c8c2487cc5fa8ea0cd84ab8ccee41add
BLAKE2b-256 ae950c82a468a926e71bc74d4e3dcd33bd0ec7b05d8143e9f6f6ef9fca83b1a8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.5.2-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 fca42706a0af944765f9136c33f18868e8f20709636de765f0e48bb950812a3e
MD5 15d658c99f86a4699cc5b0e6c2a22734
BLAKE2b-256 53cc024dffeab57d732df35604c0e3046e822a696ed6eadf802e6964b9902b13

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.5.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 366e5b252f5a3007b79b399fb9a2f200b50ed561336945cf209e273196b7b44f
MD5 2fb24aed714b42a02c5472477d7b95cf
BLAKE2b-256 e121dc9521d966931675c8f56728eeb9128a910f6ac7f1c8993edfaad8c37c77

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: brahe-1.5.2-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 20.4 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.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 a2c2d61a00cc8e483381c6d85ff984c6df5702347a1c7b624a0a4880a4f436b0
MD5 ae23883dc353b8f9bed06928292f69fc
BLAKE2b-256 459ff6f643e8829b8242959e4d73b1e606418f8b33e6c1f4d955bc572ed8055d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.5.2-cp311-cp311-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 0ca49ce8615c40bf2f79af2651418dce0e64fb7951db21a45b10e67342b92401
MD5 4c57673318ede546d8c486fee846d1c1
BLAKE2b-256 6291ef0966f092f15fb52ecf57cc3d10c7a22446d74bc30c1c189f0ac4b06ab5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.5.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b5fe362915e752b7dbcf77d5ceb11680aa3e0a4b35ca16167c91b22306db61f2
MD5 afd30ce903947098080199cafaacec2c
BLAKE2b-256 e2f9ffe3551e9b6809643c71113e2e303aab4c7df268754509ab8aa0d6e0be38

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: brahe-1.5.2-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 20.4 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.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 faaf8a1926465274eeb86e670de5bf9832e01aa583203a3c05d44d67eabc3616
MD5 681070bff3eb5812f28f1a76385c5cb7
BLAKE2b-256 721ff23fd684e3efe124c85ef7341d2e2c132fa49ae1bba2e92507ffd9e00749

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.5.2-cp310-cp310-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 305598802fae63a408f0d4268968d82439e826299677a7d449d20017898d4380
MD5 f07074cbcded51d124db90df4a8e9518
BLAKE2b-256 bafd7b63fe5059070d18bd9a764ae0e2a7c7bf2645902085e9a30811ade4274c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.5.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c12f288f37c28f3cee7ee662bc4632ead25e6cd1bbc1b1fedd76aa1c9b4cb186
MD5 bfbfe7cdeeeadb154a5047a544f568fd
BLAKE2b-256 4ab581446b7d007d2722d1fbf4520bbe3f14da407061ca1db4f36f2b6fb5396d

See more details on using hashes here.

Provenance

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