Skip to main content

Solar system orbit fitting and integration with JAX

Project description

Documentation Status Build Status codecov PyPI - Version pypi-platforms License: GPL3 Project Status: Active – The project has reached a stable, usable state and is being actively developed. ruff-badge

jorbit logo

jorbit is a python/JAX package for simulating and fitting orbits of objects within the solar system. Built primarily in JAX, jorbit can compute exact derivatives even for models that involve complex numerical integrators, like IAS15, and acceleration functions, like Parameterized Post-Newtonian gravitation. It has several high-level convenience wrappers for dealing with standard massless minor planets, but also can enable more complex simulations through user-provided acceleration functions.

For more information, check out the documentation!

Installation

Exact installation instructions may depend on your hardware/environment, so see the installation page for more information. In general, you can install jorbit with pip:

Be aware! The first time you import jorbit, it will automatically download and cache (via the astropy caching mechanisms) about ~1 GB of files required to run its simulations, including the JPL DE400 ephemeris files. Other jorbit functions may also need to download/cache additional files, so be sure to have a good internet connection and enough disk space available.

python -m pip install -U jorbit

jorbit was built with uv, so if you want to replicate the exact development environment, use the uv.lock file. Check out the uv docs for more information.

Example Usage

Many more examples can be found in the docs, but here are two simple examples to get you started:

To create an ephemeris for a minor planet:

from astropy.time import Time
from jorbit import Particle

p = Particle.from_horizons(name="274301", time=Time("2025-01-01"))
ephem = p.ephemeris(
    times=Time(["2025-01-01", "2025-01-02", "2025-01-03"]),
    observer="Kitt Peak"
)

To identify all known minor planets nearby a certain position at a certain time:

import astropy.units as u
from astropy.coordinates import SkyCoord
from astropy.time import Time

from jorbit.mpchecker import mpchecker

mpchecker(
    coordinate=SkyCoord(ra=0 * u.deg, dec=0 * u.deg),
    time=Time("2025-01-01"),
    radius=10 * u.arcmin,
    extra_precision=True,
    observer="Palomar",
)

Contributing

If you have any trouble with the code, feel free to open an issue! We welcome open-source contributions, so if you have a feature request or bug fix, please open a pull request. For more information, see the contributing guide.

Attribution

jorbit is made freely available under the GPL License. If you use this code in your research, please cite the accompanying paper:

@ARTICLE{2025PSJ.....6..252C,
       author = {{Cassese}, Ben and {Rice}, Malena and {Lu}, Tiger},
        title = "{A High-precision, Differentiable Code for Solar System Ephemerides}",
      journal = {\psj},
     keywords = {Astronomy software, Solar system, Orbit determination, Bayesian statistics, 1855, 1528, 1175, 1900, Earth and Planetary Astrophysics, Instrumentation and Methods for Astrophysics},
         year = 2025,
        month = nov,
       volume = {6},
       number = {11},
          eid = {252},
        pages = {252},
          doi = {10.3847/PSJ/ae0a36},
archivePrefix = {arXiv},
       eprint = {2509.19549},
 primaryClass = {astro-ph.EP},
       adsurl = {https://ui.adsabs.harvard.edu/abs/2025PSJ.....6..252C},
      adsnote = {Provided by the SAO/NASA Astrophysics Data System}
}

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

jorbit-1.4.1.tar.gz (35.9 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

jorbit-1.4.1-py3-none-any.whl (166.1 kB view details)

Uploaded Python 3

File details

Details for the file jorbit-1.4.1.tar.gz.

File metadata

  • Download URL: jorbit-1.4.1.tar.gz
  • Upload date:
  • Size: 35.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for jorbit-1.4.1.tar.gz
Algorithm Hash digest
SHA256 8375340df1a1c60fa2e1d766722cd4993c6a9bfc750a33907dacc33fae71f64f
MD5 e135302535aeb1be3612c6521c2c5cc3
BLAKE2b-256 ad7a799946af3bfa62fefbf16940b2365f0cb2556e862f888408b0ae7ba5c39c

See more details on using hashes here.

File details

Details for the file jorbit-1.4.1-py3-none-any.whl.

File metadata

  • Download URL: jorbit-1.4.1-py3-none-any.whl
  • Upload date:
  • Size: 166.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for jorbit-1.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 352eb2b5ce36fcb0198d9798cd43e7b72eb465c44eeb3141cb504a467bbf660a
MD5 998312f5924f4ab03eddc452edbac307
BLAKE2b-256 55748e79624f389ef97ff7d6862942fa2fcc96270782d7eda54a368e1f143433

See more details on using hashes here.

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