Contributions
virgil brings together many projects from one research team and ideas we liked in other packages. We used Claude Code (Opus 5.5) to join existing ideas in one framework, not to write everything from scratch, and GitHub Copilot's coding agent wrote much of the 2026 code: tests, review fixes, the Laplace uncertainties for grid searches and some tutorials. So the commit history does not show who deserves credit for which ideas. The Development carbon page estimates the energy and carbon cost of this AI-assisted work.
History
- drpangloss. Dori Blakely began the project as a set of functions for the PDS 70 paper (Blakely et al. 2025, AJ 169, 137). Benjamin Pope and Louis Desdoigts then rewrote it by hand as
drpangloss. Louis wrote the fast JAX grid searches (the basis ofgrid_fit) and the first kernel-phase support. Dori wrote the first notebook of Bayesian upper limits. The name was a joke on Voltaire's Candide and Antoine Mérand's CANDID: Doctor Pangloss believes we live in the best of all possible worlds, much as CANDID with better optimizers would. - virgil. By 2026 the joke no longer fitted, and the team took up Benjamin Pope's suggestion of
virgil, with Jonah Goldfine's acronym: the Versatile Interferometric Reconstruction and Gradient-based Inference Library. In Dante's Divine Comedy, Virgil guides the poet through the underworld; the README explains why that suits image reconstruction.
People and their projects
- Louis Desdoigts.
- Every model is built on his zodiax, whose dot-paths (
"comp.flux") are the public fitting interface. virgil.amigoreads the mixed-DISCO format of his AMIGO pipeline (Desdoigts et al. 2026, PASA 43, e075).virgil.coveragesimulates data in that form, following AMIGO's latent visibility basis.- The matrix Fourier transform was checked against the one in his dLux (Desdoigts et al. 2024).
- Every model is built on his zodiax, whose dot-paths (
- Shashank Dholakia.
- He made
drpanglosshandle spectrally dispersed data in 2024. GravityDarkenedStarcomes from his unpublished thesis work on rapidly rotating stars. Its equations are those of Espinosa Lara & Rieutord (2011); its implementation follows Aaron Dotter's GDit.- virgil has an interface to his harmonix (Dholakia & Pope 2025).
- The JAX translation of the CEPHES Bessel functions, now the separate package jaxbessel, is adapted from harmonix.
- He made
- Max Charles. The image reconstruction is largely a port and extension of the visibility-based part of his
dorito, written for his NIRISS AMI paper (PASA 43, e048, 2026). Some of the inspiration fordoritocame from Ian Czekala's MPoL. - Jonah Goldfine. The parametric scenes (
virgil.scenes) come from his frito, together with geometric primitives from his unpublished work on PDS 70. - Toon De Prins.
- He contributed the inclined, azimuthally modulated rim (
ModulatedGaussianRim) and the elliptical transforms, from his work on post-AGB disks. - He reviewed and fixed the 0.4.0 release, including the pipeline layer.
- He contributed the inclined, azimuthally modulated rim (
- Dori Blakely. Besides starting the project, Dori contributed the flared-disk geometry from the PDS 70 paper.
- Frantz Martinache. The binary visibility function
cvis_binaryis adapted from his xara (formerly pysco; Martinache 2010).
Claude Code made the harmonix, ELR, dorito, scenes and Gaussian-process inclusions.
Methods
Docstrings cite these where they are used. The References page lists every source by module, and references/ in the repository has the BibTeX.
Data and observables
- OIFITS: Pauls et al. (2005) and OIFITS 2, Duvert, Young & Hummel (2017).
- Legacy OIFITS tools (
virgil.legacy): from ImPlaneIA by Anand Sivaramakrishnan and collaborators. - NIRISS mask geometry: Sivaramakrishnan et al. (2023).
- Kernel phase: Martinache (2010).
- Correlated closure phases: Kammerer et al. (2020). Closure phases that share a baseline are correlated (±1/3 for equal noise), so virgil keeps only the independent combinations and uses their covariance in the likelihood.
- Telescope gains, with the covariance taken from the model: Lachaume (2021).
- Error floors: as in PMOIRED (Mérand 2022).
- Matrix Fourier transform: Soummer et al. (2007).
Source models
- Limb-darkened disks: Quirrenbach et al. (1996), eq. 3, with Kipping (2013) q₁, q₂ coefficients.
- Gravity darkening: Espinosa Lara & Rieutord (2011).
- Radial profiles of disks by quadrature (
MultipoleDisk): the Fourier–Bessel (Hankel) representation of a radial brightness profile on a set of nodes, from frank (Jennings et al. 2020); parametric profiles (Gaussian rings and gaps, power laws with soft edges), the deprojection of the uv plane and a Gaussian envelope, from vis-r (Kennedy 2025). virgil reimplements the ideas for optical and infrared observables and copies no code. - Non-parametric radial profiles as Gaussian processes (
RadialGP,RadialGPFunction,MultipoleKernel): whitened latents on radial nodes, \(g = \mu + Lz\) with a dense kernel, fitted and sampled with automatic differentiation, and a separate radial process per physical quantity, from FRAP (Yoshida et al. 2026). virgil reimplements the ideas (Matérn kernels, a profile that is the exponential of the process, processes for the azimuthal harmonics and the spectral index) for optical and infrared observables and copies no code. - Chromatic scenes of stars and environment, each with its own spectrum: SPARCO (Kluska et al. 2014); blackbody dust as in Hillen et al. (2016).
Detection and limits
- Detection limits: CANDID (Gallenne et al. 2015) and Absil et al. (2011).
- Bayesian upper limits: Ruffio et al. (2018).
- Likelihood-ratio tests: Wilks' theorem and Chernoff (1954) on parameter boundaries.
- Trials factor: the look-elsewhere effect (Gross & Vitells 2010).
- Detection statistics compared by injection-recovery ROC curves (Fawcett 2006).
Orbits
- Linear marginalization of the Thiele–Innes constants: Hartkopf, McAlister & Franz (1989), Wright & Howard (2009), Lucy (2014), Luger, Foreman-Mackey & Hogg (2017).
- Period resolution: from The Joker (Price-Whelan et al. 2017).
- Uniform angle priors and calibration terms: from Octofitter (Thompson et al. 2023).
- Compared with, but not taken from: orbitize! (Blunt et al. 2020) and orvara (Brandt et al. 2021).
Imaging
- Maximum entropy: the "historic" MaxEnt of Skilling & Bryan (1984), and the choice of its weight by "classic" MaxEnt (Gull 1989; Skilling 1989).
- Evidence for regularization weights and re-estimated error bars: MacKay (1992).
- Choosing the weight from the L-curve corner: Hansen & O'Leary (1993).
- Total variation: Rudin, Osher & Fatemi (1992); TSV and L1 as in Honma et al. (2014), Akiyama et al. (2017) and Kuramochi et al. (2018).
- Log-sum sparsity: Candès, Wakin & Boyd (2008), as in SQUEEZE (Baron, Monnier & Kloppenburg 2010).
- Starlet sparsity: Starck, Murtagh & Fadili (2010).
- CLEAN: Högbom (1974), multiscale CLEAN (Cornwell 2008) and multi-frequency CLEAN (Rau & Cornwell 2011).
- Image-quality metrics: from the interferometric imaging beauty contests (Malbet et al. 2010; Baron et al. 2012).
- Review of optical-interferometric imaging: Thiébaut & Young (2017).
- Gaussian-process image priors: from information field theory (Enßlin, Frommert & Kitaura 2009) and the Enßlin group's NIFTy (Arras et al. 2021; Edenhofer et al. 2024).
- Imaging ensembles: Drevon et al. (2026).
Inference
- Sampling: the No-U-Turn Sampler (Hoffman & Gelman 2014) through numpyro.
- Variational inference:
- ADVI (Kucukelbir et al. 2017);
- flow guides, as inverse autoregressive flows (Kingma et al. 2016) and block neural autoregressive flows (De Cao, Titov & Aziz 2019);
- PSIS diagnostics (Vehtari et al. 2024).
- Default priors: Jeffreys (1946).
Software
virgil is built on JAX and on Patrick Kidger's equinox, optimistix and lineax, with optax, numpyro, jaxoplanet and jaxbessel. AMICAL reduces the ground-based aperture-masking data used in the examples.