My modelling research centres on joint orbit fitting: building Bayesian models that simultaneously constrain orbits using radial velocities, direct imaging, absolute astrometry, and interferometry.
Traditional approaches treat these data types independently, but a planet produces correlated signatures across all of them. Combining constraints within a single model reveals companions missed by any single technique. (New to astrometry? See my short introduction.)
A major focus is Gaia astrometry. Comparing Hipparcos and Gaia measurements reveals stars whose motion is being tugged by an unseen companion, which constrains companion masses and orbits for thousands of nearby stars.
In G23H (Thompson et al. 2026), we extracted as much of this information as possible from existing data. We calibrated Gaia DR2 proper motions and DR3–DR2 position differences against the Gaia DR3 reference frame, and combined them with the Hipparcos-Gaia Catalog of Accelerations, the Hipparcos intermediate astrometric data, Gaia's excess astrometric noise, and Gaia radial-velocity variability, in one joint likelihood that marginalizes over Gaia's unpublished observation epochs. The result is full orbit posteriors for a large class of companions. In some cases, like 14 Her b, this is enough to confirm the planetary nature of a signal using only Gaia and Hipparcos. The calibrated catalog covers 18 million stars and is public.
Rather than reporting only the most significant detections, we compute a posterior for every star. These posteriors, together with detection limits, are browsable on Exopost for more than 100,000 stars. Because non-detections are kept, the same posteriors can be combined in population-level models to measure how common giant planets and brown dwarfs are, and how that depends on the mass and composition of their host stars.
Gaia DR4, scheduled for 2 December 2026, will add epoch astrometry: the individual position measurements for each star. I have been developing fast methods to fit these data at the scale of the full Gaia catalogue, and to combine them with everything else we know about each system.
I also work on fitting orbits directly to imaging data—sometimes called "de-orbiting." Rather than extracting astrometry from images, this approach samples orbital parameters directly from pixel values, enabling detection of planets too faint to appear in any single epoch by coherently combining observations over their orbital motion.
Beyond fitting, I emphasize rigorous model validation. Techniques like simulation-based calibration verify that posteriors are correctly calibrated, while cross-validation and posterior predictive checks identify outliers and model misspecification. These tools are essential for trusting results from complex joint models, and they have proven their worth in practice by catching subtle software defects. Independent benchmarks help too: for the binary brown dwarf Gliese 229 Ba/Bb, the total mass from the tight inner orbit agrees with the mass inferred from the Hipparcos-Gaia acceleration of the host star.
To make these methods practical, I built Octofitter around a custom probabilistic programming system. User-specified models are transformed at compile time into type-stable, automatically differentiable code. This enables gradient-based sampling (Hamiltonian Monte Carlo) with performance competitive with hand-written implementations—fits that once took hours now run in minutes. For difficult, multimodal posteriors, Octofitter works with the parallel tempering sampler Pigeons, developed by my collaborators in UBC Statistics.
See the Software page for more details on Octofitter and related packages.
Last updated October 2026
🐙