orbitize! v3: Orbit fitting for the High-contrast Imaging Community

orbitize! is a package for Bayesian modeling of the orbital parameters of resolved binary objects from time series measurements. It was developed with the needs of the high-contrast imaging community in mind, and has since also become widely used in the binary star community


Major features added since v1
For a detailed overview of the orbitize!API, core functionality (including information about our Kepler solver), and initial verification, we refer the reader to Blunt et al. (2020).This section lists major new features that have been added to the code since the release of version 1.0 and directs the reader to more information about each of them.A full descriptive list of modifications to the code is maintained in our changelog.
Major new features since v1 include: 1.The functionality to jointly fit the radial velocity (RV) time series for the primary star together with the secondary companion (see Section 3 of Blunt et al. (2023)).For the primary star, the RV data can either be directly input into orbitize!(as explained in the Radial Velocity Tutorial) or be fitted separately and then used as priors (as detailed in the Non-orbitize!Posteriors as Priors Tutorial).
2. The ability to jointly fit absolute astrometry of the primary star.orbitize!can fit the Hipparcos-Gaia catalog of accelerations (Brandt (2021); see the HGCA Tutorial), as well as Hipparcos intermediate astrometric data and Gaia astrometry, following Nielsen et al. (2020) (see the Hipparcos IAD Tutorial).It can also handle arbitrary absolute astrometry (see the Fitting Arbitrary Astrometry Tutorial).
3. In addition to the MCMC and OFTI posterior computation algorithms documented in Blunt et al. (2020), orbitize!version 3 also implements a nested sampling backend, via dynesty (Speagle (2020); see the dynesty Tutorial.) 4. orbitize!version 3 implements two prescriptions for handling multi-planet effects.Keplerian epicyclic motion of the primary star due to multiple orbiting bodies, following Lacour et al. (2021), is discussed in the Multi-planet Tutorial, and N-body interactions are discussed in Covarrubias et al. (2022).The Keplerian epicyclic motion prescription only accounts for star-planet interactions, treating the motion of the star as a sum of Keplerian orbit signals, while the N-body prescription models this effect as well as planet-planet interactions.

Verification and Documentation
orbitize!implements a full stack of automated testing and documentation building practices.We use GitHub Actions to automatically run a suite of unit tests, maintained in orbitize/tests, each time code is committed to the public repository or a pull request is opened.The Jupyter notebook tutorials, maintained in orbitize/docs/tutorials, are also run automatically when a pull request to the main branch is opened.Documentation is built using sphinx, and hosted on readthedocs.orgat orbitize.info.We also maintain a set of longer-running tests in orbitize/tests/end-to-end-tests that show real scientific use cases of the code.These tests are not automatically run.
orbitize! is documented through API docstrings describing individual functions, which are accessible on our readthedocs page, a set of Jupyter notebook tutorials walking the user through a particular application, a set of frequently asked questions, and an in-progress "manual" describing orbit fitting with orbitize!from first principles.

Comparison to Similar Packages
Since the release of orbitize!version 1, other open source packages have been released that have similar goals to orbitize!, notably orvara (Brandt et al., 2021) and octofitter (Thompson et al., 2023).This is a wonderful development, as all packages benefit from open sharing of knowledge!orbitize!, orvara, and octofitter can do many similar things, but each has unique features and strengths; as an example, octofitter is extraordinarily fast, and enables joint astrometry extraction and orbit modeling, while orbitize!has unique abilities to fit arbitrary absolute astrometry (i.e.not from Hipparcos or Gaia) and model data using an N-body backend.orvara analytically marginalizes over parallax assuming a prior informed by Gaia, a significant speed advantage, while orbitize!allows different parallax priors to be used.We recommend that users of each package compare the implementations of the particular features they wish to use.
Best practices for orbit fitting, particularly using radial velocities, for which the treatment of stellar activity is an active area of research, and absolute astrometry with Gaia and Hipparcos, for which the treatment of correlated errors is an active area of research, evolve quickly.The philosophy of orbitize! is to, as much as possible, implement multiple approaches to a problem, evidenced by our multiple implementations of radial velocity joint fitting and absolute astrometry joint fitting (described above).For detailed information about our particular implementations, we refer the reader to our documentation.

5.
The ability to fit in different orbital bases (Ferrer-Chávez et al. (2021), Surti et al. (2023); see the Changing Bases tutorial), as well as the ability to apply the observation-based priors derived in O'Neil et al. (2019) (see the Observation-based Priors Tutorial).