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.6.0.tar.gz (19.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.6.0-cp314-cp314-win_amd64.whl (20.7 MB view details)

Uploaded CPython 3.14Windows x86-64

brahe-1.6.0-cp314-cp314-manylinux_2_34_x86_64.whl (20.9 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.34+ x86-64

brahe-1.6.0-cp314-cp314-macosx_11_0_arm64.whl (20.6 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

brahe-1.6.0-cp313-cp313-win_amd64.whl (20.7 MB view details)

Uploaded CPython 3.13Windows x86-64

brahe-1.6.0-cp313-cp313-manylinux_2_34_x86_64.whl (20.9 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ x86-64

brahe-1.6.0-cp313-cp313-macosx_11_0_arm64.whl (20.6 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

brahe-1.6.0-cp312-cp312-win_amd64.whl (20.7 MB view details)

Uploaded CPython 3.12Windows x86-64

brahe-1.6.0-cp312-cp312-manylinux_2_34_x86_64.whl (20.9 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ x86-64

brahe-1.6.0-cp312-cp312-macosx_11_0_arm64.whl (20.6 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

brahe-1.6.0-cp311-cp311-win_amd64.whl (20.7 MB view details)

Uploaded CPython 3.11Windows x86-64

brahe-1.6.0-cp311-cp311-manylinux_2_34_x86_64.whl (20.9 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.34+ x86-64

brahe-1.6.0-cp311-cp311-macosx_11_0_arm64.whl (20.6 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

brahe-1.6.0-cp310-cp310-win_amd64.whl (20.7 MB view details)

Uploaded CPython 3.10Windows x86-64

brahe-1.6.0-cp310-cp310-manylinux_2_34_x86_64.whl (20.9 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.34+ x86-64

brahe-1.6.0-cp310-cp310-macosx_11_0_arm64.whl (20.6 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

Details for the file brahe-1.6.0.tar.gz.

File metadata

  • Download URL: brahe-1.6.0.tar.gz
  • Upload date:
  • Size: 19.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for brahe-1.6.0.tar.gz
Algorithm Hash digest
SHA256 16c91d5791dfcc7143fa7321a603d1a76599c03917986bfbc47d26e20dcc7605
MD5 b95033ddbd0f17284ee25ef684a78e97
BLAKE2b-256 c00b431a07c4d81a94d0387e8357f107762fccf6e4c5c924cc4c96b5e79848a9

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: brahe-1.6.0-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 20.7 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.6.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 796a80da922ddbfc90d0ffee52bf4bdd421b7d935a9003cb9571fb0d97d329fb
MD5 25ae80af49e157fbf703c9729ec1cfef
BLAKE2b-256 2b06ef494419d4fcab3b4132cdf0e770ecd840ccf3348994ffb27f233f8f5131

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.6.0-cp314-cp314-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 4248cad26031dea72709276921de59416d284c4d608122aece2b56f160016afc
MD5 1328f811333c9bb1f882bb3b26044bda
BLAKE2b-256 bfdef3c8386065f0b7b7fdcc1304457368c177d18be98c50228d60f8092163e8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.6.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a43931e9523c69e3fe386022543345d07ec13f93f50177aa48de77ac6529bbea
MD5 367f2f8f2e761bf79bad70c51e8ab319
BLAKE2b-256 d2eeeabf89e7761b1f78306bca8d677230de9cba73784751f287d58940c2939d

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: brahe-1.6.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 20.7 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.6.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 b4da1b6f61b27a98fe3c3ccd00d4cf6607159e1d5eaad2c46386711c6e91ee16
MD5 8da2765bfe0d60c93a3426b0a7ba80b5
BLAKE2b-256 6d8518385b4d25003be27ffa8d56d6cb6425a21ac4440cf7d375c894082c7c55

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.6.0-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 7e06f6db9e99e1fd082b6b89ca1d28a213fa16fec47e758eea0925dde64ddf5a
MD5 46e136d81892fb9feb0c9c6d7c95212a
BLAKE2b-256 5738bb592b0265205c5569dc9e7bc96745810f9ec513619ea13e6d8708e46e47

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.6.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 739d0ef7ca71b592f0ce0afc23b2b12c1f236a672804134f4550a1fa0a68d572
MD5 ba585a23f8554c15d068b6fded02a11f
BLAKE2b-256 64f7b94039fc699859edd09fd0674bef18415d830425828d280a7447d59b3d24

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: brahe-1.6.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 20.7 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.6.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 ff003e4c0fa00e46ad3720cabebd1a2051c50fbd80def0a33fa5c996e2954cfd
MD5 878810da6659bcccbdcd986b74fbf227
BLAKE2b-256 a4b6cff9dbc69aa31f6abac8ffa704dec394c889f5829a79ba1520b059212640

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.6.0-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 63cb88347d2f9d7f8a2e59e83325e92af08ea11b694c9d1e81dd0a9f5ca8df05
MD5 1e28b5a870d281e960e2760b4b2257f6
BLAKE2b-256 33a2de4fd4b486fcf64c62314188e183a7158ad115d223f09525ac7a4dcdde7d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.6.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 cc511e1d10a77a3b5a16bbe691c0ee94d7764f808021088f727d5855352e8258
MD5 d0dc30ff9d848ecc2ddc4cdcfbbbf783
BLAKE2b-256 05ee4d2c0f29b83d0e0b3382a0846674044613f23976147386056fc96dbb557c

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: brahe-1.6.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 20.7 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.6.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 95a3e8533481c050bc28cf2c41c19e14986713f78deb425aa42f1467243ac1d8
MD5 3144a424eab32b77ee8dcc80809cc093
BLAKE2b-256 f1f4c64c6e59010d08da283d76e37bf970fd84665754f6fd3fd9affcdbc69080

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.6.0-cp311-cp311-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 0d05541e37c967df72094a984bad68f55455250e44ba58139061a5481b9d6c94
MD5 d414240c4a204b7e9e3924430bb365cf
BLAKE2b-256 dceddbb91af623c2c1d73b65a513142124df118bead8d8494587a0ad7a6b827b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.6.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 23f821b206020ea085d70795f66bbf4357e1742055833a707df9b51b5621399a
MD5 a8d7b6a2611743b58820e6842bae3307
BLAKE2b-256 3c2bf3aad987aa70a887f778be4ae2ce87ee8583c3e152aef42de46b284af1a5

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: brahe-1.6.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 20.7 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.6.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 2f971e0d193f743078f00ec2ea08dccd4a5cf6706a04ce8a6996ceac58489c78
MD5 14e36a13e15f83787755b3774fddec37
BLAKE2b-256 cd308911f1656ba67da601e123222865f59c8c7329bc756fc15fbafd5c29cbfc

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.6.0-cp310-cp310-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 54086f5894b4ab3787f0ddca9d2dfd5a29fd7343a072331c13176b044090be00
MD5 9242b5c34512d5bad1906fd37ea8be6e
BLAKE2b-256 366787bca7b452175615163f6255d44d8269398b64078f4b98c49875d99f44e2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for brahe-1.6.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 326250776516ba724a58d4b908f36e7b35520a9c55e6a040218bd87f2478b41f
MD5 92c2a204b4bc94655cdfa9b844510311
BLAKE2b-256 88599c0c723452b57ccc9f7cb41cf17bcc666e1c26f2baa039ee7c39ff8a5f14

See more details on using hashes here.

Provenance

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