Code
Software and code
Most of my papers come with the code that made them. Nearly all of it is on GitHub under an MIT licence, the cross-band pipeline is archived on Zenodo, and the older projects at the bottom aren't online. The public code is all Python. The first group is the code behind the papers. The rest are standalone projects, and the READMEs have the details and the numbers.
Behind the papers
-
sbi-xray-calibration
The code behind the X-ray inference paper. It trains the neural posterior on simulated XMM-Newton spectra, runs the three misspecification checks, retrains with the gain shift marginalised out, and cross-checks everything against nested sampling.
-
wdms-xp-calibration
The injection-recovery audit behind the Gaia paper: about 30,000 sources from the Li et al. 2025 white dwarf plus main-sequence catalog, testing whether the BP-band calibration residual manufactures spurious binaries at its published bound.
-
Cross-band periodicity search (Zenodo)
The pipeline and the 1,800 injection runs behind the cross-band search for supermassive black hole binaries, archived with a DOI so the limit can be recomputed from the same inputs.
Supermassive black hole binaries, gravitational waves and multi-messenger
-
tng-smbhb-population
Takes the IllustrisTNG black hole merger catalog and turns it into a detectability funnel across pulsar timing arrays, LISA and optical surveys. Along the way I found and fixed a catalog bug that set every mass ratio to 1.
-
Stripe82-SMBHB-search
Searches the MacLeod et al. Stripe 82 quasar catalog for periodic signals, with a damped-random-walk false-alarm null per object so that red noise can't fake a period. 44 candidates at 99% significance, 10 at 99.9%.
-
lisa-gap-imputer
A transformer that fills the gaps in LISA strain data left by antenna repointing and micrometeorite hits. Trained on coloured-noise realisations with injected black hole chirps and galactic binaries, and benchmarked against spline and Gaussian-process baselines.
-
smbhb-inspiral
Post-Newtonian inspirals of supermassive black hole binaries from 105 to 1010 solar masses, set against the NANOGrav and LISA sensitivity curves, with optical detectability for Stripe 82, PTF and LSST.
-
ztf-kn-vetting
Reproduces the human vetting decisions from the Kasliwal et al. 2020 ZTF gravitational-wave follow-up campaign with a feature-based classifier. It also maps where pipelines like this fail on sparse real-time photometry.
X-ray and high-energy astrophysics
-
xrb-xlf-forwardmodel
Completeness-folded likelihood and hierarchical stacking for X-ray binary luminosity functions. It removes the slope bias you get from ignoring detection limits and tightens the slope by a factor of 2.4.
-
galactic-xray-source-classifier
A calibrated gradient-boosted classifier (star, cataclysmic variable, X-ray binary, AGN) for eROSITA Galactic-plane sources with Gaia counterparts, with leakage-free calibration, a label-circularity audit and out-of-distribution flagging. It assigns confident labels to 93% of about 20,750 unlabelled inner-plane sources.
-
AutoRXTE
End-to-end RXTE analysis: automated downloads from HEASARC, GTI filtering, event extraction, power spectra, automated XSPEC fitting and colour-colour diagrams.
-
Astrosat-Automation
The AstroSat archive only lets you download one observation at a time, so this batch-downloads them with Selenium, filtered by source name, date range and instrument configuration.
Other
-
galaxy-morphology-cnn-vit
Five CNN and vision-transformer architectures on Galaxy10 DECaLS. The first version had SMOTE leakage, a wrong loss-target encoding and ImageNet normalisation applied to galaxy pixels. This one doesn't.
-
Voigt-Wiener-pipeline
An optical and near-infrared spectral line pipeline: Wiener deconvolution to remove the instrumental profile, Voigt profile fits, redshift correction and line identification against the NIST catalogs. Developed on ePESSTO+ supernova spectra.
Not on GitHub
- Binary star mass transfer with MESA: conservative and non-conservative mass transfer, accretor rejuvenation, metallicity evolution and contact binary formation over stellar evolutionary timescales.
- Telling earthquakes from nuclear tests with Fourier analysis of blast waves, on simulated data from US DOE archives.
- A horn antenna pointed at the Galactic centre to pick up the 21 cm hydrogen line and map radio sources.
- SiS molecular lines in the carbon star IRC+10216 with CASA, from radio interferometry data.