Software

I write research software for stellar astrophysics and browser apps that run on real data.

Research codes

PhD work, 2025 to 2027

JANUS

Neural networks that read a red giant's chemistry from its Gaia spectrum and say how far to trust each result. It runs on Deucalion and MareNostrum 5.

Open source · version 0.2.0 · MIT licence

Starfold

Python package that finds groups in a table of measurements without labels and reports how often each group recurs across 32 refits. It returns 17 named warnings for claims the evidence does not support.

2025 to 2026 · paper in preparation

HAYDNsim

Pipeline that builds synthetic fields of dense star clusters and forecasts the noise in each star's brightness measurement for the proposed HAYDN mission. I wrote it during my secondment at INAF-OAS Bologna.

Playgrounds

Methods from my coursework and research, rebuilt to run in the browser on real data.

Demos and apps

Larger tools built on real catalogues and stellar models, to explore in the browser.

Tools I use

These are codes written by other people that I have used in my research, each credited to its authors.

MSc thesis, 2021 to 2022

PARAM

By L. da Silva et al. (2006); T. S. Rodrigues et al. (2014, 2017)

A Bayesian code that compares a star's observed properties with a grid of stellar models and returns distributions of its mass, radius and age. I used it on synthetic stars and on 35 seismic Ariel targets.

MSc thesis, 2021 to 2022

MESA

By B. Paxton et al. (2011) and the MESA developers

An open-source code that evolves a star through time by solving the equations of stellar structure. I worked with its evolutionary tracks as the model grid behind PARAM and in my thesis figures.

MSc thesis, 2021 to 2022

GYRE

By R. H. D. Townsend and S. A. Teitler (2013)

In my MSc thesis I worked with GYRE mode frequencies in the PARAM grid, from which the global seismic parameters were derived. I did not run GYRE myself.

MSc thesis, 2021 to 2022

BCCode

By L. Casagrande and D. A. VandenBerg (2014, 2018)

Tables and codes that convert the light a star emits in one filter into its total output, the bolometric correction. I used them for luminosities in my MSc thesis, with Monte Carlo sensitivity tests.

MSc thesis, 2021 to 2022

YBC

By Y. Chen et al. (2019)

A database of bolometric corrections for many photometric systems, made for the PARSEC isochrones. I used it alongside BCCode to turn Gaia magnitudes into luminosities in my MSc thesis.

MSc thesis, 2021 to 2022

mwdust

By J. Bovy et al. (2016); dust map by G. M. Green et al. (2019)

A Python package that returns interstellar extinction for a direction on the sky and a distance, from published dust maps. I used it for the extinction of Ariel targets, favouring the 3D map of Green et al. (2019).

HAYDNsim, 2025 to 2026

TRILEGAL

By L. Girardi et al. (2005)

A model of the Galaxy that predicts the stars seen in a given field. I used it to generate synthetic populations of globular clusters for noise forecasts of the proposed HAYDN mission.

HAYDNsim, 2025 to 2026

HAYDN Noise Estimator

By R. Samadi (LIRA, Observatoire de Paris)

A per-star photometric noise model for the proposed HAYDN mission. I ran it on a supercomputer for HAYDN target fields and, reconfigured, for three PLATO Guest Observer proposals.

PhD

galpy

By J. Bovy (2015)

A Python package for Galactic dynamics that integrates the orbit of a star through a model of the Galaxy. I use it for orbit parameters in work in preparation and in my ArqueoGal data repository.

Packages and applications

  1. May 2026 to present live

    Tellurion: a laboratory of interactive physics simulations

    Covers mechanics, electromagnetism, optics, quantum mechanics, relativity, statistical mechanics, fluid dynamics, condensed matter and astrophysics. Built during the PhD as a teaching resource.

    • Plain JavaScript modules without a framework, drawn in Canvas2D, SVG and WebGL2, on shared numerical engines with symplectic integrators and Markov chain Monte Carlo samplers.
    • Each simulation has invariant tests against thresholds in its specification, plus browser end-to-end and pixel-regression tests.
    • Optional course routes follow FCUP programmes. Public beta.
    version
    0.1.2
    licence
    MIT
    role
    sole developer
  2. Apr 2026 to present released

    Starfold

    Python package that finds groups in a table of measurements without labels, using UMAP, HDBSCAN and Optuna. It extends Neitzel et al. 2025.

    • Searches UMAP and HDBSCAN settings from the library defaults and scores each one without labels against a structureless copy of the table.
    • Refits the chosen setting on 32 random subsets to measure how often each group recurs, and returns 17 named flags for claims the evidence does not support.
    • GPU path through RAPIDS cuML with a CPU fallback, strict typing and 294 tests.
    • Matched or beat the library defaults on 8 of 10 benchmark tables, but on only 2 of 4 held-out tables.
    version
    0.2.0
    licence
    MIT
    role
    sole developer
  3. Apr 2026 to present live

    Stellar Explorer

    Browser app built on a MESA r24.08.1 and GYRE track of a one-solar-mass star, with an HR diagram, an animated interior, profile panels and an oscillation spectrum.

    role
    sole developer
  4. Apr 2026 to present in development

    ArqueoGal integration repository

    Prepares Gaia DR3 and APOGEE DR19 data, with provenance, for the models of the FCT ArqueoGal project. The stellar-label model (JANUS) and the population classifier (Starfold) are separate repositories.

    • Applies the Lindegren et al. 2021 parallax zero point, the Riello et al. 2021 G-band correction and the Mészáros et al. 2025 APOGEE DR19 label corrections.
    • Assembles extinction, distances and galpy kinematics, with a provenance file next to each product.
    version
    0.1.0
    licence
    MIT
    role
    sole author and maintainer