Skip to main content

Fast and flexible orbit fitting

Project description

octofitterpy

octofitterpy is a python package for performing Bayesian inference against a wide variety of exoplanet / binary star data. It uses the Octofitter.jl julia package under the hood (just like eg numpy uses C).

octofitterpy can access almost all functionality of Octofitter.jl. Currently a subset of this functionality including relative astrometry fitting, absolute astrometry fitting, and various plotting functions have been wrapped with convenient python functions. Remaining functionality can be accessed via the octofitterpy.Octofitter submodule.

The examples directory and demo notebook provide an introduction to using octofitter in Python. Extensive documentation and tutorials are available here for the Julia version, and for the most part are directly translatable to Python.

Installation

In python 3.8 to 3.11 based environment, run:

pip install -U octofitterpy

Example

import octofitterpy as octo

# See demo.ipynb for more details
astrom_like = octo.PlanetRelAstromLikelihood(
    epoch = [50000,50120],
    sep = [505.7,600.1],
    pa = [0.0,0.4,],
    σ_sep = [10,10],
    σ_pa = [0.01,0.01],
    cor= [0,0.2]
)
planet_b = octo.Planet(
    name="b",
    basis="Visual{KepOrbit}",
    priors=
    """            
        a ~ LogUniform(0.1, 500)
        e ~ Uniform(0.0, 0.99)
        i ~ Sine()
        ω ~ UniformCircular()
        Ω ~ UniformCircular()
        θ ~ UniformCircular()
        tp = θ_at_epoch_to_tperi(system,b,50000) # use MJD epoch of your data here!!
    """,
    likelihoods=[astrom_like]
)
sys = octo.System(
    name="HIP100123",
    priors = 
    """
        M ~ truncated(Normal(1.2, 0.1), lower=0)
        plx ~ truncated(Normal(50.0, 0.02), lower=0)
    """,
    likelihoods=[],
    companions=[planet_b]
)
model = octo.LogDensityModel(sys) # Compile model
chain = octo.octofit(model) # Sample model
octo.octoplot(model,chain) # Plot orbits
octo.octocorner(model,chain,small=True) # Make corner plot
octo.savechain("table.fits", chain)

Read the paper

In addition to these documentation and tutorial pages, you can read the paper published in the Astronomical Journal (open-access).

Attribution

@article{Thompson_2023,
    doi = {10.3847/1538-3881/acf5cc},
    url = {https://dx.doi.org/10.3847/1538-3881/acf5cc},
    year = {2023},
    month = {sep},
    publisher = {The American Astronomical Society},
    volume = {166},
    number = {4},
    pages = {164},
    author = {William Thompson and Jensen Lawrence and Dori Blakely and Christian Marois and Jason Wang and Mosé Giordano and Timothy Brandt and Doug Johnstone and Jean-Baptiste Ruffio and S. Mark Ammons and Katie A. Crotts and Clarissa R. Do Ó and Eileen C. Gonzales and Malena Rice},
    title = {Octofitter: Fast, Flexible, and Accurate Orbit Modeling to Detect Exoplanets},
    journal = {The Astronomical Journal},
}
  • If you use the pairplot functionality, please cite:
@misc{Thompson2023,
    author = {William Thompson},
    title = {{PairPlots.jl} Beautiful and flexible visualizations of high dimensional data},
    year = {2023},
    howpublished = {\url{https://sefffal.github.io/PairPlots.jl/dev}},
}
  • The python wrapper octofitterpy is based on the excellent PySR by Miles Cranmer.

  • See the documentation for a list of additional papers to consider citing.

Ready?

Start by following this tutorial.

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

octofitterpy-5.2.1.tar.gz (6.2 MB view details)

Uploaded Source

Built Distribution

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

octofitterpy-5.2.1-py3-none-any.whl (9.3 kB view details)

Uploaded Python 3

File details

Details for the file octofitterpy-5.2.1.tar.gz.

File metadata

  • Download URL: octofitterpy-5.2.1.tar.gz
  • Upload date:
  • Size: 6.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for octofitterpy-5.2.1.tar.gz
Algorithm Hash digest
SHA256 c5d25740aea9156bb8443120c5356ba9129d4628d7e93449cd0bbad2b33ec3db
MD5 094ea3e33711a76b964ed36bbc93cff6
BLAKE2b-256 7a9b59e135ae5d8873008126d155f0ad0dc62bd45221423b28deb046cdc3e30b

See more details on using hashes here.

File details

Details for the file octofitterpy-5.2.1-py3-none-any.whl.

File metadata

  • Download URL: octofitterpy-5.2.1-py3-none-any.whl
  • Upload date:
  • Size: 9.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for octofitterpy-5.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 257783b6521e60ee3a8fa35d083603a56645b02dd6963f715bc2f379a2453517
MD5 a7774cf9caf0f520a5c5b4c67d208607
BLAKE2b-256 d258be5e7149201e3fe2ecfb7713294c6fba827a6275a0ea1ff570e844f79b94

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